dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnet ChangeLog engine/lib_string.c


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ChangeLog engine/lib_string.c
Date: Thu, 17 May 2007 09:45:03 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Changes by:     Klaus Treichel <ktreichel>      07/05/17 09:45:03

Modified files:
        .              : ChangeLog 
        engine         : lib_string.c 

Log message:
        Fix a segfault caused by an overflow when creating a new StringBuilder.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3454&r2=1.3455
http://cvs.savannah.gnu.org/viewcvs/pnet/engine/lib_string.c?cvsroot=dotgnu-pnet&r1=1.40&r2=1.41

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3454
retrieving revision 1.3455
diff -u -b -r1.3454 -r1.3455
--- ChangeLog   10 May 2007 18:28:58 -0000      1.3454
+++ ChangeLog   17 May 2007 09:45:02 -0000      1.3455
@@ -1,3 +1,9 @@
+2007-05-17  Klaus Treichel  <address@hidden>
+
+       * engine/lib_string.c: Check the new string builder capacity prior to
+       allocating the new StringBuilder to fix a not detected overflow when
+       the real memory size is computed in IL_String_NewBuilder.
+
 2007-05-10  Klaus Treichel  <address@hidden>
 
        * support/dynlib.c: Fix ILDynLibraryGetSymbol for FreeBSD. Resolving a 

Index: engine/lib_string.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/lib_string.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- engine/lib_string.c 17 Dec 2006 10:31:32 -0000      1.40
+++ engine/lib_string.c 17 May 2007 09:45:03 -0000      1.41
@@ -662,6 +662,12 @@
        {
                roundLen = length;
        }
+       /* Check if we have an overflow */
+       if((roundLen < 0) || (roundLen > ((IL_MAX_INT32 >> 1) - 
sizeof(System_String))))
+       {
+               ILExecThreadThrowOutOfMemory(thread);
+               return 0;
+       }
        roundLen = ((length + 7) & ~7); /* Round to a multiple of 8 */
        str = (System_String *)_ILEngineAllocAtomic(thread,
                                                                                
                thread->process->stringClass,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]