1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-26 01:44:06 +03:00

Bug#35987 - post-review fix

Correct usage of strncat() in get_symbol_path()

3rd parameter to strncat is changed to be count of 
remaining bytes in the output buffer minus 1.
This commit is contained in:
Vladislav Vaintroub
2008-09-16 13:16:41 +02:00
parent ebd3a6e452
commit a4987b4433

View File

@@ -391,7 +391,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);
@@ -399,9 +404,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);
}
}
@@ -423,7 +428,7 @@ void print_stacktrace(gptr 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;
@@ -432,7 +437,7 @@ void print_stacktrace(gptr 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*/