James Bursa's fix to prevent free(NULL) to occur

pull/1/head
Daniel Stenberg 21 years ago
parent 44f76e6a27
commit d870be584d
  1. 6
      ares__get_hostent.c

@ -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…
Cancel
Save