1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-05 17:15:04 -05:00

Gerald Combs fixed a bug in ares_parse_ptr_reply() which would cause a

buffer to shrink instead of expand if a reply contained 8 or more records.
This commit is contained in:
Yang Tse 2008-11-26 17:04:35 +00:00
parent a30a6f2f20
commit 67fb731ec4
2 changed files with 8 additions and 3 deletions

View File

@ -3,6 +3,9 @@
* Nov 26 2008 (Yang Tse)
- Brad Spencer provided changes to allow buildconf to work on OS X.
- Gerald Combs fixed a bug in ares_parse_ptr_reply() which would cause a
buffer to shrink instead of expand if a reply contained 8 or more records.
* Nov 25 2008 (Yang Tse)
- In preparation for the upcomming IPv6 nameservers patch, the internal
ares_addr union is now changed into an internal struct which also holds

View File

@ -55,6 +55,7 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
char *ptrname, *hostname, *rr_name, *rr_data;
struct hostent *hostent;
int aliascnt = 0;
int alias_alloc = 8;
char ** aliases;
/* Set *host to NULL for all failure cases. */
@ -84,7 +85,7 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
/* Examine each answer resource record (RR) in turn. */
hostname = NULL;
aliases = malloc(8 * sizeof(char *));
aliases = malloc(alias_alloc * sizeof(char *));
if (!aliases)
{
free(ptrname);
@ -125,9 +126,10 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
}
strncpy(aliases[aliascnt], rr_data, strlen(rr_data)+1);
aliascnt++;
if ((aliascnt%8)==0) {
if (aliascnt >= alias_alloc) {
char **ptr;
ptr = realloc(aliases, (aliascnt/16+1) * sizeof(char *));
alias_alloc *= 2;
ptr = realloc(aliases, alias_alloc * sizeof(char *));
if(!ptr) {
status = ARES_ENOMEM;
break;