diff --git a/src/main.c b/src/main.c
index 9ccc40bc539ddf90f1a1d07bb9c0f8d1a506c52b..aeb685987caa9db6fb4328ff52a8b208297952e6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -117,7 +117,6 @@ static int stunc_get_auth_code(char *data, int data_len, const char *key, char *
 static int stunc_init(void)
 {
 	int len;
-	char address[256] = {0};
 	char *val;
 
 	stunc_uci_init();
@@ -129,7 +128,11 @@ static int stunc_init(void)
 
 	val = stunc_uci_get_value("stunc", "stunc", "server_address");
 	if (STRLEN(val) == 0) {
+		char address[256] = {0};
+
 		SLOG(INFO, "Server Address not present in the STUN config");
+		FREE(val);
+
 		/* Read from ACS address */
 		get_acs_address(&val);
 		if (val == NULL)
@@ -166,13 +169,12 @@ get_addr:
 
 		snprintf(address, len + 1, "%s", val);
 		free(tmp);
-
-		val = address;
+		conf.server_address = strdup(address);
+	} else {
+		conf.server_address = strdup(val);
+		FREE(val);
 	}
 
-	conf.server_address = strdup(val);
-	FREE(val);
-
 	val = stunc_uci_get_value("stunc", "stunc", "username");
 	if (STRLEN(val))
 		conf.username = strdup(val);
@@ -273,9 +275,9 @@ static int stunc_start(void)
 
 static int stunc_finish(void)
 {
-	free(conf.server_address);
-	free(conf.password);
-	free(conf.username);
+	FREE(conf.server_address);
+	FREE(conf.password);
+	FREE(conf.username);
 	conf.server_address = NULL;
 	conf.username = NULL;
 	conf.password = NULL;