Loading...
--- xnu/xnu-3248.50.21/libkern/c++/OSString.cpp
+++ xnu/xnu-3789.1.32/libkern/c++/OSString.cpp
@@ -68,7 +68,10 @@
if (!cString || !super::init()) return false;
- newLength = strlen(cString) + 1;
+ newLength = strnlen(cString, kMaxStringLength);
+ if (newLength >= kMaxStringLength) return false;
+
+ newLength++;
newString = (char *) kalloc_container(newLength);
if (!newString) return false;
@@ -94,6 +97,8 @@
if (!cString || !super::init()) return false;
+ if (inlength >= kMaxStringLength) return false;
+
newLength = inlength + 1;
newString = (char *) kalloc_container(newLength);
if (!newString) return false;
@@ -120,7 +125,10 @@
if (!cString || !super::init())
return false;
- length = strlen(cString) + 1;
+ length = strnlen(cString, kMaxStringLength);
+ if (length >= kMaxStringLength) return false;
+
+ length++;
flags |= kOSStringNoCopy;
string = const_cast<char *>(cString);