summaryrefslogtreecommitdiff
path: root/mysys/stacktrace.c
diff options
context:
space:
mode:
authorVladislav Vaintroub <vvaintroub@mysql.com>2008-09-16 15:23:07 +0200
committerVladislav Vaintroub <vvaintroub@mysql.com>2008-09-16 15:23:07 +0200
commitf6e28fd538e2300c6fb04c771c6a4d924f2c3dee (patch)
tree3a69e6c7f6ca92b6519e0764dc8b43527d1c9b5c /mysys/stacktrace.c
parent4f3d241b28559b7fceebda8524ac86b4004c579c (diff)
parenta4987b4433c85607f3ad41eaf3ee966f8e0d16bf (diff)
downloadmariadb-git-f6e28fd538e2300c6fb04c771c6a4d924f2c3dee.tar.gz
merge fix from 5.0-bugteam
Diffstat (limited to 'mysys/stacktrace.c')
-rw-r--r--mysys/stacktrace.c15
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*/