summaryrefslogtreecommitdiff
path: root/mysys/default.c
diff options
context:
space:
mode:
authorunknown <hf@deer.mysql.r18.ru>2003-04-16 14:49:46 +0500
committerunknown <hf@deer.mysql.r18.ru>2003-04-16 14:49:46 +0500
commit01f85890639612136f2bd1cabd779014a226e9f6 (patch)
tree3fd8938c1760c2ba4534a0e0cc64f1c0665348db /mysys/default.c
parent7690ab2fb99ff3fb1b1e7b7d0ab775d2af439d2c (diff)
downloadmariadb-git-01f85890639612136f2bd1cabd779014a226e9f6.tar.gz
Bugfix for segfault in mysql with embedded library
mysys/default.c: Fix for bug in mysql with embedded library we can get NULL in *argv
Diffstat (limited to 'mysys/default.c')
-rw-r--r--mysys/default.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/mysys/default.c b/mysys/default.c
index 8811efc1190..9fedfd795a5 100644
--- a/mysys/default.c
+++ b/mysys/default.c
@@ -174,7 +174,8 @@ void load_defaults(const char *conf_file, const char **groups,
res= (char**) (ptr+sizeof(alloc));
/* copy name + found arguments + command line arguments to new array */
- res[0]=argv[0][0];
+ res[0]=*argc ? argv[0][0] : "";
+
memcpy((gptr) (res+1), args.buffer, args.elements*sizeof(char*));
/* Skipp --defaults-file and --defaults-extra-file */
(*argc)-= args_used;
@@ -187,8 +188,9 @@ void load_defaults(const char *conf_file, const char **groups,
--*argc; ++*argv; /* skipp argument */
}
- memcpy((gptr) (res+1+args.elements), (char*) ((*argv)+1),
- (*argc-1)*sizeof(char*));
+ if (*argc)
+ memcpy((gptr) (res+1+args.elements), (char*) ((*argv)+1),
+ (*argc-1)*sizeof(char*));
res[args.elements+ *argc]=0; /* last null */
(*argc)+=args.elements;