Author: rfm
Date: Sun Jun  1 20:08:44 2014
New Revision: 37934

URL: http://svn.gna.org/viewcvs/gnustep?rev=37934&view=rev
Log:
fix for bug #42483

Modified:
    libs/base/trunk/ChangeLog
    libs/base/trunk/Source/Additions/Unicode.m
    libs/base/trunk/Source/GSString.m
    libs/base/trunk/Tests/base/NSString/test00.m

Modified: libs/base/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/ChangeLog?rev=37934&r1=37933&r2=37934&view=diff
==============================================================================
--- libs/base/trunk/ChangeLog   (original)
+++ libs/base/trunk/ChangeLog   Sun Jun  1 20:08:44 2014
@@ -1,3 +1,9 @@
+2014-06-01  Richard Frith-Macdonald <[email protected]>
+
+       * Source/Additions/Unicode.m: Fix buffer overrun.
+       * Source/GSString.m: Fix uninitialised variable.
+       Cure for bug #42483
+
 2014-05-28  Manuel Guesdon <[email protected]>
        * Source/NSUndoManager.m
          Assert sig is not null in registerUndoWithTarget:selector:object:

Modified: libs/base/trunk/Source/Additions/Unicode.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/Additions/Unicode.m?rev=37934&r1=37933&r2=37934&view=diff
==============================================================================
--- libs/base/trunk/Source/Additions/Unicode.m  (original)
+++ libs/base/trunk/Source/Additions/Unicode.m  Sun Jun  1 20:08:44 2014
@@ -2068,9 +2068,9 @@
                    uint8_t     *tmp;
 
 #if    GS_WITH_GC
-                   tmp = NSAllocateCollectable(slen, 0);
+                   tmp = NSAllocateCollectable(slen + extra, 0);
 #else
-                   tmp = NSZoneMalloc(zone, slen);
+                   tmp = NSZoneMalloc(zone, slen + extra);
                    if (ptr != buf && ptr != *dst)
                      {
                        NSZoneFree(zone, ptr);

Modified: libs/base/trunk/Source/GSString.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/GSString.m?rev=37934&r1=37933&r2=37934&view=diff
==============================================================================
--- libs/base/trunk/Source/GSString.m   (original)
+++ libs/base/trunk/Source/GSString.m   Sun Jun  1 20:08:44 2014
@@ -1806,7 +1806,7 @@
 static inline const char*
 cString_c(GSStr self, NSStringEncoding enc)
 {
-  unsigned char *r;
+  unsigned char *r = 0;
 
   if (self->_count == 0)
     {

Modified: libs/base/trunk/Tests/base/NSString/test00.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Tests/base/NSString/test00.m?rev=37934&r1=37933&r2=37934&view=diff
==============================================================================
--- libs/base/trunk/Tests/base/NSString/test00.m        (original)
+++ libs/base/trunk/Tests/base/NSString/test00.m        Sun Jun  1 20:08:44 2014
@@ -256,8 +256,20 @@
   NSAutoreleasePool   *arp = [NSAutoreleasePool new];
   NSString     *str;
   NSString     *sub;
-  char buf[10];
-  
+  const char    *ptr;
+  char         buf[10];
+  
+  str = @"a";
+  while ([str length] < 30000)
+    {
+      str = [str stringByAppendingString: str];
+    }
+  if (0 == [str length] % 2)
+    {
+      str = [str stringByAppendingString: @"x"];
+    }
+  ptr = [str cStringUsingEncoding: NSASCIIStringEncoding];
+
   PASS_EXCEPTION([NSString stringWithUTF8String: 0],
     NSInvalidArgumentException,
     "stringWithUTF8String raises for NULL");


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to