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