From: Russell Bryant Date: Tue, 3 Jun 2008 13:29:16 +0000 (+0000) Subject: Do a deep copy of file and function strings to avoid a potential crash when X-Git-Tag: 1.6.2.0-beta1~2099 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8b0ea3a76dd83e82ff5bea63128c198b4c1106ff;p=thirdparty%2Fasterisk.git Do a deep copy of file and function strings to avoid a potential crash when modules are unloaded. (closes issue #12780) Reported by: ys Patches: logger.diff uploaded by ys (license 281) -- modified by me for coding guidelines git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@119892 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/logger.c b/main/logger.c index 94cbac208b..23704473ed 100644 --- a/main/logger.c +++ b/main/logger.c @@ -133,9 +133,9 @@ struct logmsg { enum logmsgtypes type; char date[256]; int level; - const char *file; + char file[80]; int line; - const char *function; + char function[80]; AST_LIST_ENTRY(logmsg) list; char str[0]; }; @@ -1135,7 +1135,7 @@ void ast_log(int level, const char *file, int line, const char *function, const /* Create a new logging message */ if (!(logmsg = ast_calloc(1, sizeof(*logmsg) + res + 1))) return; - + /* Copy string over */ strcpy(logmsg->str, buf->str); @@ -1148,9 +1148,9 @@ void ast_log(int level, const char *file, int line, const char *function, const /* Copy over data */ logmsg->level = level; - logmsg->file = file; logmsg->line = line; - logmsg->function = function; + ast_copy_string(logmsg->file, file, sizeof(logmsg->file)); + ast_copy_string(logmsg->function, function, sizeof(logmsg->function)); /* If the logger thread is active, append it to the tail end of the list - otherwise skip that step */ if (logthread != AST_PTHREADT_NULL) {