From: Robert Millan Date: Thu, 30 Mar 2006 11:14:56 +0000 (+0000) Subject: Duplicate setprogname argument X-Git-Tag: 0.0~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1d87476250217a87319df48a8f473415c0515106;p=thirdparty%2Flibbsd.git Duplicate setprogname argument For some reason, accessing the argv vector directly may cause SIGSEV. --- diff --git a/src/progname.c b/src/progname.c index 7777658..e422b5e 100644 --- a/src/progname.c +++ b/src/progname.c @@ -19,9 +19,10 @@ Rejected in glibc (http://sourceware.org/ml/libc-alpha/2006-03/msg00125.html) */ -#include +#include /* progname, strdup */ +#include /* free */ -static char *__progname = NULL; +char *__progname = NULL; char * getprogname () @@ -32,5 +33,10 @@ getprogname () void setprogname (char *new) { - __progname = new; + /* For some reason, accessing the argv vector directly may cause SIGSEV. Let's copy it to avoid trouble. */ + + if (__progname != NULL) + free (__progname); + + __progname = strdup (new); }