Loading...
libkern/c++/OSUnserialize.cpp xnu-12377.101.15 xnu-6153.41.3
--- xnu/xnu-12377.101.15/libkern/c++/OSUnserialize.cpp
+++ xnu/xnu-6153.41.3/libkern/c++/OSUnserialize.cpp
@@ -184,45 +184,11 @@
 
 #define YYSTYPE object_t *
 
-__BEGIN_DECLS
-#include <kern/kalloc.h>
-__END_DECLS
-
-// Omit from static analysis.
-#ifndef __clang_analyzer__
-
-#define malloc(size)         malloc_impl(size)
-#define malloc_type(type)    kalloc_type(type, Z_SET_NOT_EARLY)
-static inline void *
-malloc_impl(size_t size)
-{
-	if (size == 0) {
-		return NULL;
-	}
-	return kalloc_data(size,
-	           Z_VM_TAG_BT(Z_WAITOK_ZERO, VM_KERN_MEMORY_LIBKERN));
-}
-
-#define free(addr)             free_impl(addr)
-#define free_type(type, addr)  kfree_type(type, addr)
-static inline void
-free_impl(void *addr)
-{
-	kfree_data_addr(addr);
-}
-static inline void
-safe_free(void *addr, size_t size)
-{
-	kfree_data(addr, size);
-}
-
-#define realloc(addr, osize, nsize) realloc_impl(addr, osize, nsize)
-static inline void *
-realloc_impl(void *addr, size_t osize, size_t nsize)
-{
-	return krealloc_data(addr, osize, nsize,
-	           Z_VM_TAG_BT(Z_WAITOK_ZERO, VM_KERN_MEMORY_LIBKERN));
-}
+#include <libkern/OSRuntime.h>
+
+#define malloc(s) kern_os_malloc(s)
+#define realloc(a, s) kern_os_realloc(a, s)
+#define free(a) kern_os_free(a)
 
 
 
@@ -257,7 +223,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 212 "OSUnserialize.tab.c"
+#line 182 "OSUnserialize.tab.c"
 
 #ifdef short
 # undef short
@@ -547,9 +513,9 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-	0, 151, 151, 152, 153, 156, 157, 158, 159, 160,
-	161, 162, 163, 172, 180, 181, 184, 185, 188, 198,
-	199, 202, 203, 206, 211, 222, 230, 235, 240
+	0, 121, 121, 122, 123, 126, 127, 128, 129, 130,
+	131, 132, 133, 142, 150, 151, 154, 155, 158, 168,
+	169, 172, 173, 176, 181, 192, 200, 205, 210
 };
 #endif
 
@@ -1488,57 +1454,57 @@
 	YY_REDUCE_PRINT(yyn);
 	switch (yyn) {
 	case 2:
-#line 151 "OSUnserialize.y"
+#line 121 "OSUnserialize.y"
 		{ parsedObject = (OSObject *)NULL; YYACCEPT;;}
 		break;
 
 	case 3:
-#line 152 "OSUnserialize.y"
+#line 122 "OSUnserialize.y"
 		{ parsedObject = (OSObject *)(yyvsp[(1) - (1)]); YYACCEPT;;}
 		break;
 
 	case 4:
-#line 153 "OSUnserialize.y"
+#line 123 "OSUnserialize.y"
 		{ yyerror("syntax error"); YYERROR;;}
 		break;
 
 	case 5:
-#line 156 "OSUnserialize.y"
+#line 126 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSDictionary((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 6:
-#line 157 "OSUnserialize.y"
+#line 127 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSArray((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 7:
-#line 158 "OSUnserialize.y"
+#line 128 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSSet((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 8:
-#line 159 "OSUnserialize.y"
+#line 129 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSString((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 9:
-#line 160 "OSUnserialize.y"
+#line 130 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSData((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 10:
-#line 161 "OSUnserialize.y"
+#line 131 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSOffset((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 11:
-#line 162 "OSUnserialize.y"
+#line 132 "OSUnserialize.y"
 		{ (yyval) = (object_t *)buildOSBoolean((yyvsp[(1) - (1)]));;}
 		break;
 
 	case 12:
-#line 163 "OSUnserialize.y"
+#line 133 "OSUnserialize.y"
 		{ (yyval) = (object_t *)retrieveObject((yyvsp[(2) - (2)])->u.offset);
 		  if ((yyval)) {
 			  ((OSObject *)(yyval))->retain();
@@ -1551,7 +1517,7 @@
 		break;
 
 	case 13:
-#line 172 "OSUnserialize.y"
+#line 142 "OSUnserialize.y"
 		{ (yyval) = (yyvsp[(1) - (3)]);
 		  rememberObject((yyvsp[(3) - (3)])->u.offset, (yyvsp[(1) - (3)]));
 		  freeObject((yyvsp[(3) - (3)]));
@@ -1559,22 +1525,22 @@
 		break;
 
 	case 14:
-#line 180 "OSUnserialize.y"
+#line 150 "OSUnserialize.y"
 		{ (yyval) = NULL;;}
 		break;
 
 	case 15:
-#line 181 "OSUnserialize.y"
+#line 151 "OSUnserialize.y"
 		{ (yyval) = (yyvsp[(2) - (3)]);;}
 		break;
 
 	case 17:
-#line 185 "OSUnserialize.y"
+#line 155 "OSUnserialize.y"
 		{ (yyvsp[(2) - (2)])->next = (yyvsp[(1) - (2)]); (yyvsp[(1) - (2)])->prev = (yyvsp[(2) - (2)]); (yyval) = (yyvsp[(2) - (2)]);;}
 		break;
 
 	case 18:
-#line 188 "OSUnserialize.y"
+#line 158 "OSUnserialize.y"
 		{ (yyval) = newObject();
 		  (yyval)->next = NULL;
 		  (yyval)->prev = NULL;
@@ -1584,27 +1550,27 @@
 		break;
 
 	case 19:
-#line 198 "OSUnserialize.y"
+#line 168 "OSUnserialize.y"
 		{ (yyval) = NULL;;}
 		break;
 
 	case 20:
-#line 199 "OSUnserialize.y"
+#line 169 "OSUnserialize.y"
 		{ (yyval) = (yyvsp[(2) - (3)]);;}
 		break;
 
 	case 21:
-#line 202 "OSUnserialize.y"
+#line 172 "OSUnserialize.y"
 		{ (yyval) = NULL;;}
 		break;
 
 	case 22:
-#line 203 "OSUnserialize.y"
+#line 173 "OSUnserialize.y"
 		{ (yyval) = (yyvsp[(2) - (3)]);;}
 		break;
 
 	case 23:
-#line 206 "OSUnserialize.y"
+#line 176 "OSUnserialize.y"
 		{ (yyval) = newObject();
 		  (yyval)->object = (yyvsp[(1) - (1)]);
 		  (yyval)->next = NULL;
@@ -1613,7 +1579,7 @@
 		break;
 
 	case 24:
-#line 211 "OSUnserialize.y"
+#line 181 "OSUnserialize.y"
 		{ oo = newObject();
 		  oo->object = (yyvsp[(3) - (3)]);
 		  oo->next = (yyvsp[(1) - (3)]);
@@ -1624,7 +1590,7 @@
 		break;
 
 	case 25:
-#line 222 "OSUnserialize.y"
+#line 192 "OSUnserialize.y"
 		{ (yyval) = (yyvsp[(1) - (3)]);
 		  (yyval)->size = (yyvsp[(3) - (3)])->u.offset;
 		  freeObject((yyvsp[(3) - (3)]));
@@ -1633,7 +1599,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 1585 "OSUnserialize.tab.c"
+#line 1555 "OSUnserialize.tab.c"
 	default: break;
 	}
 	YY_SYMBOL_PRINT("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -1845,7 +1811,7 @@
 }
 
 
-#line 243 "OSUnserialize.y"
+#line 213 "OSUnserialize.y"
 
 
 static int              lineNumber = 0;
@@ -1960,7 +1926,7 @@
 
 		/* copy to null terminated buffer */
 		tempString = (char *)malloc(length + 1);
-		if (tempString == NULL) {
+		if (tempString == 0) {
 			printf("OSUnserialize: can't alloc temp memory\n");
 			return 0;
 		}
@@ -1994,7 +1960,7 @@
 		(void)nextChar();
 		/* copy to null terminated buffer */
 		tempString = (char *)malloc(length + 1);
-		if (tempString == NULL) {
+		if (tempString == 0) {
 			printf("OSUnserialize: can't alloc temp memory\n");
 			return 0;
 		}
@@ -2054,8 +2020,7 @@
 	if (c == '<') {
 		unsigned char *d, *start, *lastStart;
 
-		size_t buflen = OSDATA_ALLOC_SIZE;
-		start = lastStart = d = (unsigned char *)malloc(buflen);
+		start = lastStart = d = (unsigned char *)malloc(OSDATA_ALLOC_SIZE);
 		c = nextChar(); // skip over '<'
 		while (c != 0 && c != '>') {
 			if (isSpace(c)) {
@@ -2098,14 +2063,13 @@
 			d++;
 			if ((d - lastStart) >= OSDATA_ALLOC_SIZE) {
 				int oldsize = d - start;
-				assert(buflen == oldsize);
-				start = (unsigned char *)realloc(start, oldsize, buflen);
+				start = (unsigned char *)realloc(start, oldsize + OSDATA_ALLOC_SIZE);
 				d = lastStart = start + oldsize;
 			}
 			c = nextChar();
 		}
 		if (c != '>') {
-			safe_free(start, buflen);
+			free(start);
 			return SYNTAX_ERROR;
 		}
 
@@ -2138,7 +2102,7 @@
 #if DEBUG
 	debugUnserializeAllocCount++;
 #endif
-	return malloc_type(object_t);
+	return (object_t *)malloc(sizeof(object_t));
 }
 
 void
@@ -2147,7 +2111,7 @@
 #if DEBUG
 	debugUnserializeAllocCount--;
 #endif
-	free_type(object_t, o);
+	free(o);
 }
 
 static OSDictionary *tags;
@@ -2248,7 +2212,7 @@
 {
 	OSString *s = OSString::withCString((char *)o);
 
-	safe_free(o, strlen((char *)o) + 1);
+	free(o);
 
 	return s;
 };
@@ -2263,7 +2227,7 @@
 	} else {
 		d = OSData::withCapacity(0);
 	}
-	safe_free(o->object, o->size);
+	free(o->object);
 	freeObject(o);
 	return d;
 };
@@ -2312,10 +2276,10 @@
 	if (yyparse() == 0) {
 		object = parsedObject;
 		if (errorString) {
-			*errorString = NULL;
+			*errorString = 0;
 		}
 	} else {
-		object = NULL;
+		object = 0;
 		if (errorString) {
 			*errorString = OSString::withCString(yyerror_message);
 		}
@@ -2332,8 +2296,6 @@
 
 	return object;
 }
-
-#endif // not __clang_analyzer__
 
 
 //