char *ip = NULL;
char *ifname = NULL;
char *save_str = NULL;
+ char *addr = NULL;
GList *iter = NULL;
ipv6_info_s *ipv6info = NULL;
ipv4_info_s *ipv4info = NULL;
- ip = strtok_r(ipdata, "%", &save_str);
+ addr = g_strdup(ipdata);
+
+ ip = strtok_r(addr, "%", &save_str);
ifname = strtok_r(NULL, "%", &save_str);
iter = g_list_first(g_ip_info.ipv6_list);
while (NULL != iter) {
ipv6info = iter->data;
- if (ipv6info && ipv6info->ip && !strncmp(ipv6info->ip, ip, INET6_ADDRSTRLEN))
+ if (ipv6info && ipv6info->ip && !strncmp(ipv6info->ip, ip,
+ INET6_ADDRSTRLEN)) {
+ g_free(addr);
return LOCAL_IP;
+ }
iter = g_list_next(iter);
}
iter = g_list_first(g_ip_info.ipv4_list);
while (NULL != iter) {
ipv4info = iter->data;
- if (ipv4info && ipv4info->ip && !strncmp(ipv4info->ip, ip, INET_ADDRSTRLEN))
+ if (ipv4info && ipv4info->ip && !strncmp(ipv4info->ip, ip,
+ INET_ADDRSTRLEN)) {
+ g_free(addr);
return LOCAL_IP;
+ }
iter = g_list_next(iter);
}
+ g_free(addr);
return REMOTE_IP;
}