From 1d87476250217a87319df48a8f473415c0515106 Mon Sep 17 00:00:00 2001 From: Robert Millan Date: Thu, 30 Mar 2006 11:14:56 +0000 Subject: [PATCH] Duplicate setprogname argument For some reason, accessing the argv vector directly may cause SIGSEV. --- src/progname.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } -- 2.47.3