List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:September 16 2008 1:17pm
Subject:bzr commit into mysql-5.1-bugteam branch (vvaintroub:2680) Bug#35987
View as plain text  
#At file:///G:/bzr/mysql-5.0-bugteam/

 2680 Vladislav Vaintroub	2008-09-16
      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.
modified:
  sql/stacktrace.c

=== modified file 'sql/stacktrace.c'
--- a/sql/stacktrace.c	2008-09-15 12:58:32 +0000
+++ b/sql/stacktrace.c	2008-09-16 11:16:41 +0000
@@ -391,7 +391,12 @@ static void get_symbol_path(char *path, 
 
       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, 
 
   /* 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, ulon
   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, ulon
   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*/

Thread
bzr commit into mysql-5.1-bugteam branch (vvaintroub:2680) Bug#35987Vladislav Vaintroub16 Sep