Loading...
--- xnu/xnu-3248.50.21/libkern/c++/OSUnserializeXML.cpp
+++ xnu/xnu-2422.1.72/libkern/c++/OSUnserializeXML.cpp
@@ -2791,10 +2791,9 @@
OSUnserializeXML(const char *buffer, OSString **errorString)
{
OSObject *object;
-
- if (!buffer) return 0;
parser_state_t *state = (parser_state_t *)malloc(sizeof(parser_state_t));
- if (!state) return 0;
+
+ if ((!state) || (!buffer)) return 0;
// just in case
if (errorString) *errorString = NULL;
@@ -2820,18 +2819,13 @@
return object;
}
-#include <libkern/OSSerializeBinary.h>
-
OSObject*
OSUnserializeXML(const char *buffer, size_t bufferSize, OSString **errorString)
{
- if (!buffer) return (0);
- if (bufferSize < sizeof(kOSSerializeBinarySignature)) return (0);
-
- if (!strcmp(kOSSerializeBinarySignature, buffer)) return OSUnserializeBinary(buffer, bufferSize, errorString);
+ if ((!buffer) || (!bufferSize)) return 0;
// XML must be null terminated
- if (buffer[bufferSize - 1]) return 0;
+ if (buffer[bufferSize - 1] || strnlen(buffer, bufferSize) == bufferSize) return 0;
return OSUnserializeXML(buffer, errorString);
}