diff options
author | Dario Lombardo <lomato@gmail.com> | 2015-10-05 14:32:15 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-10-25 00:21:48 +0000 |
commit | 2d2b1294930e8a3d6963da688ae633e10c28fe50 (patch) | |
tree | 1773b6e8a66f578b5332f62ec79a376df8b784b7 /tools | |
parent | 3ea14493e7091cbfb40e0cb6bf9f91e78d57d9d4 (diff) |
lemon: move free() to avoid mem leak (CID 718529)
Change-Id: I3b0740f5ccc3b9b87ed351e26f198152bbb1e599
Reviewed-on: https://code.wireshark.org/review/10801
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lemon/lemon.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c index 573d6774fb..acbdd129ec 100644 --- a/tools/lemon/lemon.c +++ b/tools/lemon/lemon.c @@ -3174,9 +3174,10 @@ void ReportOutput(struct lemon *lemp) PRIVATE char *pathsearch(char *argv0, char *name, int modemask) { const char *pathlist; - char *pathbufptr; - char *pathbuf; - char *path,*cp; + char *pathbufptr = NULL; + char *pathbuf = NULL; + char *path = NULL; + char *cp; char c; #ifdef __WIN32__ @@ -3192,15 +3193,15 @@ PRIVATE char *pathsearch(char *argv0, char *name, int modemask) *cp = c; }else{ pathlist = getenv("PATH"); - if( pathlist==0 ) pathlist = ".:/bin:/usr/bin"; + if( pathlist==NULL ) pathlist = ".:/bin:/usr/bin"; pathbuf = (char *) malloc( lemonStrlen(pathlist) + 1 ); + pathbufptr = pathbuf; path = (char *)malloc( lemonStrlen(pathlist)+lemonStrlen(name)+2 ); - if( (pathbuf != 0) && (path!=0) ){ - pathbufptr = pathbuf; + if( (pathbuf != NULL) && (path!=NULL) ){ lemon_strcpy(pathbuf, pathlist); while( *pathbuf ){ cp = strchr(pathbuf,':'); - if( cp==0 ) cp = &pathbuf[lemonStrlen(pathbuf)]; + if( cp==NULL ) cp = &pathbuf[lemonStrlen(pathbuf)]; c = *cp; *cp = 0; lemon_sprintf(path,"%s/%s",pathbuf,name); @@ -3209,9 +3210,11 @@ PRIVATE char *pathsearch(char *argv0, char *name, int modemask) else pathbuf = &cp[1]; if( access(path,modemask)==0 ) break; } - free(pathbufptr); } } + if (pathbufptr) + free(pathbufptr); + return path; } |