List:Commits« Previous MessageNext Message »
From:Tatiana A. Nurnberg Date:August 19 2008 3:56pm
Subject:bzr commit into mysql-5.1 branch (azundris:2709) Bug#35616
View as plain text  
#At file:///misc/mysql/forest/35616/51-35616/

 2709 Tatiana A. Nurnberg	2008-08-19
      Bug#35616: memory overrun on 64-bit linux on setting large values for keybuffer-size
      
      We could allocate chunks larger than 4GB, but did our
      size-accounting in 32-bit values. This could lead to
      spurious warnings, inaccurate accounting, and, in
      theory, data loss.
        
      Affected: 64-bit platforms. Debug-build (with safemalloc).
      At least one buffer larger than 4GB. For potential data
      loss, a re-alloc on such a buffer would be necessary.
modified:
  mysys/my_static.c
  mysys/my_static.h

per-file messages:
  mysys/my_static.c
    Make memory-accounting 64-bit safe.
  mysys/my_static.h
    Make memory-accounting 64-bit safe.
    Move in struct for better alignment when 64-bit.
=== modified file 'mysys/my_static.c'
--- a/mysys/my_static.c	2008-05-06 09:52:23 +0000
+++ b/mysys/my_static.c	2008-08-19 13:56:41 +0000
@@ -70,8 +70,8 @@ uint sf_malloc_prehunc=0,		/* If you hav
      sf_malloc_endhunc=0,		/* dump when malloc-message.... */
 					/* set theese to 64 or 128  */
      sf_malloc_quick=0;			/* set if no calls to sanity */
-ulong sf_malloc_cur_memory= 0L;		/* Current memory usage */
-ulong sf_malloc_max_memory= 0L;		/* Maximum memory usage */
+size_t sf_malloc_cur_memory= 0L;		/* Current memory usage */
+size_t sf_malloc_max_memory= 0L;		/* Maximum memory usage */
 uint  sf_malloc_count= 0;		/* Number of times NEW() was called */
 uchar *sf_min_adress= (uchar*) ~(unsigned long) 0L,
      *sf_max_adress= (uchar*) 0L;

=== modified file 'mysys/my_static.h'
--- a/mysys/my_static.h	2008-05-06 09:52:23 +0000
+++ b/mysys/my_static.h	2008-08-19 13:56:41 +0000
@@ -44,8 +44,8 @@ struct st_irem
   struct st_irem *next;		/* Linked list of structures	   */
   struct st_irem *prev;		/* Other link			   */
   char *filename;		/* File in which memory was new'ed */
+  size_t datasize;		/* Size requested		   */
   uint32 linenum;		/* Line number in above file	   */
-  uint32 datasize;		/* Size requested		   */
   uint32 SpecialValue;		/* Underrun marker value	   */
 };
 

Thread
bzr commit into mysql-5.1 branch (azundris:2709) Bug#35616Tatiana A. Nurnberg19 Aug