Loading...
--- 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__
//