summaryrefslogtreecommitdiff
path: root/tools/lemon
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-03-31 20:50:13 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-03-31 20:50:13 +0000
commitf4d68c6a08cea0c9447ebd46eaee0e784a91b010 (patch)
treeba49697d969cba6473e51af65303c9af4bfeff35 /tools/lemon
parent67608483152aa645d6f3c1e96dc742f0b923afeb (diff)
downloadwireshark-f4d68c6a08cea0c9447ebd46eaee0e784a91b010.tar.gz
Memory leak in lemon.c
coverity 1177 svn path=/trunk/; revision=36427
Diffstat (limited to 'tools/lemon')
-rw-r--r--tools/lemon/lemon.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c
index 25ec059368..78bcf3198f 100644
--- a/tools/lemon/lemon.c
+++ b/tools/lemon/lemon.c
@@ -3128,15 +3128,15 @@ PRIVATE void tplt_xfer(const char *name, FILE *in, FILE *out, int *lineno)
PRIVATE FILE *tplt_open(struct lemon *lemp)
{
static char templatename[] = "lempar.c";
- char* buf;
FILE *in;
char *tpltname = NULL;
char *cp;
if (lemp->templatename) {
tpltname = strdup(lemp->templatename);
- }
- else {
+ } else {
+ char* buf;
+
cp = strrchr(lemp->filename,'.');
buf = malloc(1000);
if( cp ){
@@ -3145,13 +3145,13 @@ PRIVATE FILE *tplt_open(struct lemon *lemp)
sprintf(buf,"%s.lt",lemp->filename);
}
if( access(buf,004)==0 ){
- tpltname = buf;
+ tpltname = strdup(buf);
}else if( access(templatename,004)==0 ){
tpltname = strdup(templatename);
}else{
tpltname = pathsearch(lemp->argv0,templatename,0);
- free(buf);
}
+ free(buf);
}
if( tpltname==0 ){
fprintf(stderr,"Can't find the parser driver template file \"%s\".\n",