aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/hostip.c16
1 files 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;