summaryrefslogtreecommitdiff
path: root/client/mysqltest.cc
diff options
context:
space:
mode:
authorBjorn Munch <bjorn.munch@oracle.com>2010-12-09 12:14:00 +0100
committerBjorn Munch <bjorn.munch@oracle.com>2010-12-09 12:14:00 +0100
commit81d29b1d82a48dfbe373c440b06c2f570691983f (patch)
tree4ec1e5703009b94fed489017ec3c72837c9b83af /client/mysqltest.cc
parent5ac43e27a5ad3ff01cf6158f7d12785ddeab3854 (diff)
downloadmariadb-git-81d29b1d82a48dfbe373c440b06c2f570691983f.tar.gz
Bug #58710 Valgrind warnings in mysqltest
Var's string value was not 0-terminated if intially null. While at it, also removed some reported memory leaks Added sanity check, setting val_len=0 if val==0
Diffstat (limited to 'client/mysqltest.cc')
-rw-r--r--client/mysqltest.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index dfd383cc714..a277af82b13 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -2073,6 +2073,8 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val,
name_len = strlen(name);
if (!val_len && val)
val_len = strlen(val) ;
+ if (!val)
+ val_len= 0;
val_alloc_len = val_len + 16; /* room to grow */
if (!(tmp_var=v) && !(tmp_var = (VAR*)my_malloc(sizeof(*tmp_var)
+ name_len+1, MYF(MY_WME))))
@@ -2093,10 +2095,9 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val,
die("Out of memory");
if (val)
- {
memcpy(tmp_var->str_val, val, val_len);
- tmp_var->str_val[val_len]= 0;
- }
+ tmp_var->str_val[val_len]= 0;
+
var_check_int(tmp_var);
tmp_var->name_len = name_len;
tmp_var->str_val_len = val_len;
@@ -5053,6 +5054,7 @@ void do_close_connection(struct st_command *command)
dynstr_append_mem(ds, ";\n", 2);
}
+ dynstr_free(&ds_connection);
DBUG_VOID_RETURN;
}
@@ -5481,6 +5483,7 @@ void do_connect(struct st_command *command)
dynstr_free(&ds_port);
dynstr_free(&ds_sock);
dynstr_free(&ds_options);
+ dynstr_free(&ds_default_auth);
#ifdef HAVE_SMEM
dynstr_free(&ds_shm);
#endif
@@ -5729,6 +5732,7 @@ void do_block(enum block_cmd cmd, struct st_command* command)
}
v.is_int= TRUE;
+ var_free(&v2);
} else
{
if (*expr_start != '`' && ! my_isdigit(charset_info, *expr_start))
@@ -7822,7 +7826,7 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
ds, &ds_warnings);
dynstr_free(&ds_warnings);
- if (command->type == Q_EVAL)
+ if (command->type == Q_EVAL || command->type == Q_SEND_EVAL)
dynstr_free(&eval_query);
if (display_result_sorted)