From 52bb692ae859bf608b874cb1f7ca79d3dba17a78 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Mon, 19 Apr 2010 08:17:19 +0000 Subject: [PATCH] e: fix #528 basename may modify its argument, so we need to strdup before calling basename. SVN revision: 48128 --- src/bin/e_exehist.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/bin/e_exehist.c b/src/bin/e_exehist.c index 4e4b761..fbd8df3 100644 --- a/src/bin/e_exehist.c +++ b/src/bin/e_exehist.c @@ -434,14 +434,18 @@ _e_exehist_limit(void) static const char * _e_exehist_normalize_exe(const char *exe) { - char *base, *cp, *space = NULL; + char *base, *buf, *cp, *space = NULL; const char *ret; Eina_Bool flag = EINA_FALSE; - base = basename((char *)exe); - if ((base[0] == '.') && (base[1] == '\0')) return NULL; + buf = strdup(exe); + base = basename(buf); + if ((base[0] == '.') && (base[1] == '\0')) + { + free(buf); + return NULL; + } - base = strdup(base); cp = base; while (*cp) { @@ -469,7 +473,7 @@ _e_exehist_normalize_exe(const char *exe) if (space) *space = '\0'; ret = eina_stringshare_add(base); - free(base); + free(buf); return ret; } -- 2.7.4