_socketDeserializeHostent: fix usage of uninitialized h_name

This commit is contained in:
Thog 2018-10-07 15:26:08 +02:00 committed by yellows8
parent 420d5d4e61
commit 8178c0fa45

View File

@ -1170,18 +1170,20 @@ static struct hostent *_socketDeserializeHostent(int *err, const void *out_he_se
return NULL; return NULL;
} }
he->h_aliases = (char **)(he->h_name + name_size); if (name_size == 1) {
he->h_addrtype = addrtype;
he->h_length = addrlen;
he->h_addr_list = he->h_aliases + nb_aliases + 1;
if(name_size == 1)
he->h_name = NULL; he->h_name = NULL;
he->h_aliases = (char**)((char*)he + sizeof(struct hostent));
}
else { else {
he->h_name = (char*)he + sizeof(struct hostent); he->h_name = (char*)he + sizeof(struct hostent);
memcpy(he->h_name, buf, name_size); memcpy(he->h_name, buf, name_size);
he->h_aliases = (char **)(he->h_name + name_size);
} }
he->h_addrtype = addrtype;
he->h_length = addrlen;
he->h_addr_list = he->h_aliases + nb_aliases + 1;
if(nb_aliases>0) { if(nb_aliases>0) {
char *alias = (char *)(he->h_addr_list + nb_addresses + 1); char *alias = (char *)(he->h_addr_list + nb_addresses + 1);
memcpy(alias, pos_aliases, total_aliases_size); memcpy(alias, pos_aliases, total_aliases_size);