From 9a6566e7743cb6f95efe7f5ca889e5589fcb1436 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 20 May 2003 09:41:39 +0000 Subject: [PATCH] Gisle Vanem's code for not trusting h_aliases to always be non-NULL --- lib/hostip.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/hostip.c b/lib/hostip.c index dc38b9f74..c245ab1b7 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -455,18 +455,22 @@ static struct hostent* pack_hostent(char** buf, struct hostent* orig) copy->h_aliases = (char**)bufptr; /* Figure out how many aliases there are */ - for (i = 0; orig->h_aliases[i] != NULL; ++i); + for (i = 0; orig->h_aliases && orig->h_aliases[i]; ++i); /* Reserve room for the array */ bufptr += (i + 1) * sizeof(char*); /* Clone all known aliases */ - for(i = 0; (str = orig->h_aliases[i]); i++) { - len = strlen(str) + 1; - strncpy(bufptr, str, len); - copy->h_aliases[i] = bufptr; - bufptr += len; + if(orig->h_aliases) { + for(i = 0; (str = orig->h_aliases[i]); i++) { + len = strlen(str) + 1; + strncpy(bufptr, str, len); + copy->h_aliases[i] = bufptr; + bufptr += len; + } } + /* if(!orig->h_aliases) i was already set to 0 */ + /* Terminate the alias list with a NULL */ copy->h_aliases[i] = NULL;