diff options
author | Vladislav Vaintroub <vvaintroub@mysql.com> | 2008-09-16 15:23:07 +0200 |
---|---|---|
committer | Vladislav Vaintroub <vvaintroub@mysql.com> | 2008-09-16 15:23:07 +0200 |
commit | f6e28fd538e2300c6fb04c771c6a4d924f2c3dee (patch) | |
tree | 3a69e6c7f6ca92b6519e0764dc8b43527d1c9b5c /mysys/stacktrace.c | |
parent | 4f3d241b28559b7fceebda8524ac86b4004c579c (diff) | |
parent | a4987b4433c85607f3ad41eaf3ee966f8e0d16bf (diff) | |
download | mariadb-git-f6e28fd538e2300c6fb04c771c6a4d924f2c3dee.tar.gz |
merge fix from 5.0-bugteam
Diffstat (limited to 'mysys/stacktrace.c')
-rw-r--r-- | mysys/stacktrace.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mysys/stacktrace.c b/mysys/stacktrace.c index 91f13d316e6..66a361b5421 100644 --- a/mysys/stacktrace.c +++ b/mysys/stacktrace.c @@ -451,7 +451,12 @@ static void get_symbol_path(char *path, size_t size) if (!strstr(path, module_dir)) { - strncat(path, module_dir, size); + size_t dir_len = strlen(module_dir); + if (size > dir_len) + { + strncat(path, module_dir, size-1); + size -= dir_len; + } } } CloseHandle(hSnap); @@ -459,9 +464,9 @@ static void get_symbol_path(char *path, size_t size) /* Add _NT_SYMBOL_PATH, if present. */ envvar= getenv("_NT_SYMBOL_PATH"); - if(envvar) + if(envvar && size) { - strncat(path, envvar, size); + strncat(path, envvar, size-1); } } @@ -483,7 +488,7 @@ void my_print_stacktrace(uchar* unused1, ulong unused2) int i; CONTEXT context; STACKFRAME64 frame={0}; - static char symbol_path[MAX_SYMBOL_PATH+1]; + static char symbol_path[MAX_SYMBOL_PATH]; if(!exception_ptrs || !init_dbghelp_functions()) return; @@ -492,7 +497,7 @@ void my_print_stacktrace(uchar* unused1, ulong unused2) context = *(exception_ptrs->ContextRecord); /*Initialize symbols.*/ pSymSetOptions(SYMOPT_LOAD_LINES|SYMOPT_NO_PROMPTS|SYMOPT_DEFERRED_LOADS|SYMOPT_DEBUG); - get_symbol_path(symbol_path, MAX_SYMBOL_PATH); + get_symbol_path(symbol_path, sizeof(symbol_path)); pSymInitialize(hProcess, symbol_path, TRUE); /*Prepare stackframe for the first StackWalk64 call*/ |