diff --git a/nlsr.c b/nlsr.c
index a30c016..c9d4cf7 100644
--- a/nlsr.c
+++ b/nlsr.c
@@ -1204,10 +1204,11 @@
 	destroy_npt();
 	destroy_routing_table();
 
-	if ( nlsr->ccns != NULL )
-		ccns_close(&nlsr->ccns, NULL, NULL);
 	if ( nlsr->slice != NULL ) 
 		ccns_slice_destroy(&nlsr->slice);
+	if ( nlsr->ccns != NULL )
+		ccns_close(&nlsr->ccns, NULL, NULL);
+	
 
 	close(nlsr->nlsr_api_server_sock_fd);
 
diff --git a/nlsr_sync.c b/nlsr_sync.c
index 54eb4e3..5f11464 100644
--- a/nlsr_sync.c
+++ b/nlsr_sync.c
@@ -174,7 +174,7 @@
 
 
 int 
-get_content_by_content_name(char *content_name, unsigned char **content_data,
+get_content_by_content_name(char *content_name, unsigned char *content_data,
 							char *orig_router)
 {
 	
@@ -265,9 +265,9 @@
 					length_in=length;
 					ccn_content_get_value(ptr_in, length_in, &pcobuf1, 
 															&ptr_in, &length_in);
-					*content_data = (unsigned char *) calloc(length_in, 
-																sizeof(char *));
-					memcpy (*content_data, ptr_in, length_in);
+					content_data = (unsigned char *) calloc(length_in, 
+																sizeof(unsigned char ));
+					memcpy (content_data, ptr_in, length_in);
 					ret=0;
 				}
 			}
@@ -479,7 +479,7 @@
 				if ( nlsr->debugging )
 					printf("New NAME LSA.....\n");	
 				int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri), 
-												&content_data,orig_router->name);
+												content_data,orig_router->name);
 				if ( chk_con == 0 ){
 					if ( nlsr->debugging )
 						printf("Content Data: %s \n",content_data);
@@ -495,7 +495,7 @@
 				if ( nlsr->debugging )
 					printf("Name LSA / Newer Name LSA already xists in LSDB\n");
 				int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri)
-											, &content_data,orig_router->name);
+											, content_data,orig_router->name);
 
 				if ( chk_con == 0 ){
 					if ( nlsr->debugging )
@@ -543,7 +543,7 @@
 					if ( nlsr->debugging )
 						printf("New Adj LSA.....\n");	
 					int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri), 
-												&content_data,orig_router->name);
+												content_data,orig_router->name);
 
 					if ( chk_con == 0 ){
 						if ( nlsr->debugging )
@@ -560,7 +560,7 @@
 					if ( nlsr->debugging )
 						printf("Adj LSA / Newer Adj LSA already exists in LSDB\n");
 					int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri), 
-												&content_data,orig_router->name);
+												content_data,orig_router->name);
 					if ( chk_con == 0 ){
 						if ( nlsr->debugging )
 							printf("Content Data: %s \n",content_data);
@@ -603,7 +603,7 @@
 					if ( nlsr->debugging )
 						printf("New Cor LSA.....\n");	
 					int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri), 
-																&content_data,
+																content_data,
 															orig_router->name);
 
 					if ( chk_con == 0 ){
@@ -621,7 +621,7 @@
 					if ( nlsr->debugging )
 						printf("Cor LSA / Newer Cor LSA already exists in LSDB\n");
 					int chk_con=get_content_by_content_name(ccn_charbuf_as_string(uri), 
-												&content_data,orig_router->name);
+												content_data,orig_router->name);
 					if ( chk_con == 0 ){
 						if ( nlsr->debugging )
 							printf("Content Data: %s \n",content_data);
