diff --git a/nx/source/runtime/devices/socket.c b/nx/source/runtime/devices/socket.c index caaaf5f4..676b2633 100644 --- a/nx/source/runtime/devices/socket.c +++ b/nx/source/runtime/devices/socket.c @@ -1170,18 +1170,20 @@ static struct hostent *_socketDeserializeHostent(int *err, const void *out_he_se return NULL; } - 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(name_size == 1) + if (name_size == 1) { he->h_name = NULL; + he->h_aliases = (char**)((char*)he + sizeof(struct hostent)); + } else { he->h_name = (char*)he + sizeof(struct hostent); 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) { char *alias = (char *)(he->h_addr_list + nb_addresses + 1); memcpy(alias, pos_aliases, total_aliases_size);