James Bursa's fix to prevent free(NULL) to occur
This commit is contained in:
parent
46cdc83b81
commit
ff0429a802
@ -140,6 +140,7 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
|
|||||||
memcpy(hostent->h_addr_list[0], &addr, sizeof(struct in_addr));
|
memcpy(hostent->h_addr_list[0], &addr, sizeof(struct in_addr));
|
||||||
hostent->h_addr_list[1] = NULL;
|
hostent->h_addr_list[1] = NULL;
|
||||||
*host = hostent;
|
*host = hostent;
|
||||||
|
if(line)
|
||||||
free(line);
|
free(line);
|
||||||
return ARES_SUCCESS;
|
return ARES_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -150,18 +151,21 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
|
|||||||
/* Memory allocation failure; clean up. */
|
/* Memory allocation failure; clean up. */
|
||||||
if (hostent)
|
if (hostent)
|
||||||
{
|
{
|
||||||
|
if(hostent->h_name)
|
||||||
free((char *) hostent->h_name);
|
free((char *) hostent->h_name);
|
||||||
if (hostent->h_aliases)
|
if (hostent->h_aliases)
|
||||||
{
|
{
|
||||||
for (alias = hostent->h_aliases; *alias; alias++)
|
for (alias = hostent->h_aliases; *alias; alias++)
|
||||||
free(*alias);
|
free(*alias);
|
||||||
}
|
}
|
||||||
|
if(hostent->h_aliases)
|
||||||
free(hostent->h_aliases);
|
free(hostent->h_aliases);
|
||||||
if (hostent->h_addr_list)
|
if (hostent->h_addr_list)
|
||||||
free(hostent->h_addr_list[0]);
|
free(hostent->h_addr_list[0]);
|
||||||
|
if(hostent->h_addr_list)
|
||||||
free(hostent->h_addr_list);
|
free(hostent->h_addr_list);
|
||||||
}
|
|
||||||
free(hostent);
|
free(hostent);
|
||||||
|
}
|
||||||
return ARES_ENOMEM;
|
return ARES_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user