Memory Leak Reduction
diff --git a/nlsr.c b/nlsr.c
index f865944..d00e4ea 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -210,7 +210,7 @@
}
add_nbr_to_adl(nbr,0,ip_addr);
-
+ free(ip_addr);
free(nbr->name);
free(nbr);
}
@@ -478,7 +478,8 @@
printf(" Wrong Command Format ( logdir /path/to/logdir/ )\n");
return;
}
-
+ if ( nlsr->logDir)
+ free(nlsr->logDir);
nlsr->logDir=(char *)calloc(strlen(dir)+1,sizeof(char));
memcpy(nlsr->logDir,dir,strlen(dir)+1);
}
@@ -558,7 +559,8 @@
free(nlsr->topo_prefix);
if ( topo_prefix[strlen(topo_prefix)-1] == '/' )
topo_prefix[strlen(topo_prefix)-1]='\0';
-
+ if(nlsr->topo_prefix)
+ free(nlsr->topo_prefix);
nlsr->topo_prefix=(char *)calloc(strlen(topo_prefix)+1,sizeof(char));
memcpy(nlsr->topo_prefix,topo_prefix,strlen(topo_prefix)+1);
printf ("Topo prefix is: %s", nlsr->topo_prefix);;
@@ -590,7 +592,8 @@
free(nlsr->slice_prefix);
if ( slice_prefix[strlen(slice_prefix)-1] == '/' )
slice_prefix[strlen(slice_prefix)-1]='\0';
-
+ if( nlsr->slice_prefix)
+ free(nlsr->slice_prefix);
nlsr->slice_prefix=(char *)calloc(strlen(slice_prefix)+1,sizeof(char));
memcpy(nlsr->slice_prefix,slice_prefix,strlen(slice_prefix)+1);
}