summaryrefslogtreecommitdiff
path: root/client/mysqltest.c
diff options
context:
space:
mode:
authormonty@mysql.com <>2004-06-18 03:02:29 +0300
committermonty@mysql.com <>2004-06-18 03:02:29 +0300
commitfd0153304dc0e2ada1144fc79f117f02bdcd132b (patch)
treebbef0bb6fad673089610709f1981fd9f249b7833 /client/mysqltest.c
parent2f76413e5a457741e33ca023a860da8fc1dcf297 (diff)
downloadmariadb-git-fd0153304dc0e2ada1144fc79f117f02bdcd132b.tar.gz
Fixed some byte order bugs with prepared statements on machines with high-byte-first. (Bug #4173)
Fixed problem with NULL and derived tables (Bug #4097) Cleanup of new pushed code
Diffstat (limited to 'client/mysqltest.c')
-rw-r--r--client/mysqltest.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index f638053b515..5ff152bd1c9 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -59,6 +59,7 @@
#include <sys/stat.h>
#include <violite.h>
+#define MAX_VAR_NAME 256
#define MAX_QUERY 65536
#define MAX_COLUMNS 256
#define PAD_SIZE 128
@@ -628,6 +629,7 @@ static int check_result(DYNAMIC_STRING* ds, const char* fname,
return error;
}
+
VAR* var_get(const char* var_name, const char** var_name_end, my_bool raw,
my_bool ignore_not_existing)
{
@@ -642,25 +644,26 @@ VAR* var_get(const char* var_name, const char** var_name_end, my_bool raw,
if (!(digit < 10 && digit >= 0))
{
const char* save_var_name = var_name, *end;
+ uint length;
end = (var_name_end) ? *var_name_end : 0;
while (my_isvar(charset_info,*var_name) && var_name != end)
- ++var_name;
+ var_name++;
if (var_name == save_var_name)
{
if (ignore_not_existing)
DBUG_RETURN(0);
die("Empty variable");
}
+ length= (uint) (var_name - save_var_name);
- if (!(v = (VAR*) hash_search(&var_hash, save_var_name,
- var_name - save_var_name)))
+ if (!(v = (VAR*) hash_search(&var_hash, save_var_name, length)) &&
+ length < MAX_VAR_NAME)
{
- char c=*var_name, *s=(char*)var_name;;
- *s=0;
- v=var_from_env(save_var_name, "");
- *s=c;
+ char buff[MAX_VAR_NAME+1];
+ strmake(buff, save_var_name, length);
+ v= var_from_env(buff, "");
}
- --var_name; /* Point at last character */
+ var_name--; /* Point at last character */
}
else
v = var_reg + digit;