summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authortnurnberg@noir.wlan.koehntopp.de <>2008-05-06 02:55:35 +0200
committertnurnberg@noir.wlan.koehntopp.de <>2008-05-06 02:55:35 +0200
commit7d36de2f651fd44d3df4a338074fd36b10978af5 (patch)
tree726d4a3603332352381310cb064a596df53465c3 /mysys
parent51cdfd34fd2de3caf66e4dd69a7afdee714a5fed (diff)
downloadmariadb-git-7d36de2f651fd44d3df4a338074fd36b10978af5.tar.gz
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.
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_static.c4
-rw-r--r--mysys/my_static.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/mysys/my_static.c b/mysys/my_static.c
index 77dbffb911e..1858d830f41 100644
--- a/mysys/my_static.c
+++ b/mysys/my_static.c
@@ -74,8 +74,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 */
byte *sf_min_adress= (byte*) ~(unsigned long) 0L,
*sf_max_adress= (byte*) 0L;
diff --git a/mysys/my_static.h b/mysys/my_static.h
index b438c936225..676b5f242e0 100644
--- a/mysys/my_static.h
+++ b/mysys/my_static.h
@@ -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 */
};