{
char *name = NULL;
char *save_str = NULL;
+ char *tmp = NULL;
name = g_strdup(fullname);
if (name == NULL)
return;
- *domain = strtok_r(name, ".", &save_str);
- *domain = strtok_r(NULL, ".", &save_str);
- *domain = strtok_r(NULL, ".", &save_str);
- *domain = strtok_r(NULL, ".", &save_str);
+ tmp = strtok_r(name, ".", &save_str);
+ tmp = strtok_r(NULL, ".", &save_str);
+ tmp = strtok_r(NULL, ".", &save_str);
+ tmp = strtok_r(NULL, ".", &save_str);
+
+ *domain = g_strdup(tmp);
+ g_free(name);
}
static int __dnssd_getaddrinfo(dnssd_handle_s *dnssd_handle, unsigned int flags,
local_handle = __create_found_service(dnssd_handle, DNSSD_TYPE_FOUND,
flags, if_index, host_name, service_name, domain, port,
txt_record, txt_len);
+ g_free(domain);
} else if (dnssd_handle->op_type == DNSSD_TYPE_FOUND_NOT_RESOLVED) {
local_handle = dnssd_handle;
dnssd_found_data_s *found = GET_FOUND_DATA_P(local_handle);