Commit 9c24a39a authored by Tatiana A. Nurnberg's avatar Tatiana A. Nurnberg
Browse files

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.
parent 0cf71401
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -70,8 +70,8 @@ uint sf_malloc_prehunc=0, /* If you have problem with core- */
     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;
+1 −1
Original line number Diff line number Diff line
@@ -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	   */
};