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);
 	}