summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorserg@serg.mylan <>2004-04-28 15:46:08 +0200
committerserg@serg.mylan <>2004-04-28 15:46:08 +0200
commit5454e5f902edba5e1096fde1c9deb3a964367803 (patch)
tree1113f75c2b6e2fd5e271480250713e4e0b67d735
parent8837e8f5c0d949a7b84056c6a8fbc03c097f7131 (diff)
downloadmariadb-git-5454e5f902edba5e1096fde1c9deb3a964367803.tar.gz
memory overflow in replace.c fixed
-rw-r--r--extra/replace.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/extra/replace.c b/extra/replace.c
index 422cfdbac36..b31b64aaff7 100644
--- a/extra/replace.c
+++ b/extra/replace.c
@@ -279,6 +279,8 @@ int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name)
length=(uint) strlen(name)+1;
if (pa->length+length >= pa->max_length)
{
+ pa->max_length=(pa->length+length+MALLOC_OVERHEAD+PS_MALLOC-1)/PS_MALLOC;
+ pa->max_length=pa->max_length*PS_MALLOC-MALLOC_OVERHEAD;
if (!(new_pos= (byte*) my_realloc((gptr) pa->str,
(uint) (pa->max_length+PS_MALLOC),
MYF(MY_WME))))
@@ -291,7 +293,6 @@ int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name)
char*);
pa->str=new_pos;
}
- pa->max_length+=PS_MALLOC;
}
if (pa->typelib.count >= pa->max_count-1)
{