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.
This commit is contained in:
parent
0cf71401b3
commit
9c24a39a42
@ -70,8 +70,8 @@ uint sf_malloc_prehunc=0, /* If you have problem with core- */
|
|||||||
sf_malloc_endhunc=0, /* dump when malloc-message.... */
|
sf_malloc_endhunc=0, /* dump when malloc-message.... */
|
||||||
/* set theese to 64 or 128 */
|
/* set theese to 64 or 128 */
|
||||||
sf_malloc_quick=0; /* set if no calls to sanity */
|
sf_malloc_quick=0; /* set if no calls to sanity */
|
||||||
ulong sf_malloc_cur_memory= 0L; /* Current memory usage */
|
size_t sf_malloc_cur_memory= 0L; /* Current memory usage */
|
||||||
ulong sf_malloc_max_memory= 0L; /* Maximum memory usage */
|
size_t sf_malloc_max_memory= 0L; /* Maximum memory usage */
|
||||||
uint sf_malloc_count= 0; /* Number of times NEW() was called */
|
uint sf_malloc_count= 0; /* Number of times NEW() was called */
|
||||||
uchar *sf_min_adress= (uchar*) ~(unsigned long) 0L,
|
uchar *sf_min_adress= (uchar*) ~(unsigned long) 0L,
|
||||||
*sf_max_adress= (uchar*) 0L;
|
*sf_max_adress= (uchar*) 0L;
|
||||||
|
@ -44,8 +44,8 @@ struct st_irem
|
|||||||
struct st_irem *next; /* Linked list of structures */
|
struct st_irem *next; /* Linked list of structures */
|
||||||
struct st_irem *prev; /* Other link */
|
struct st_irem *prev; /* Other link */
|
||||||
char *filename; /* File in which memory was new'ed */
|
char *filename; /* File in which memory was new'ed */
|
||||||
|
size_t datasize; /* Size requested */
|
||||||
uint32 linenum; /* Line number in above file */
|
uint32 linenum; /* Line number in above file */
|
||||||
uint32 datasize; /* Size requested */
|
|
||||||
uint32 SpecialValue; /* Underrun marker value */
|
uint32 SpecialValue; /* Underrun marker value */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user