summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/soc_u.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp
index 1e0f5df9b..3f0c5e388 100644
--- a/src/core/hle/service/soc_u.cpp
+++ b/src/core/hle/service/soc_u.cpp
@@ -469,11 +469,17 @@ static void GetHostId(Service::Interface* self) {
469 469
470 char name[128]; 470 char name[128];
471 gethostname(name, sizeof(name)); 471 gethostname(name, sizeof(name));
472 hostent* host = gethostbyname(name); 472 addrinfo hints = {};
473 in_addr* addr = reinterpret_cast<in_addr*>(host->h_addr); 473 addrinfo* res;
474
475 hints.ai_family = AF_INET;
476 getaddrinfo(name, NULL, &hints, &res);
477 sockaddr_in* sock_addr = reinterpret_cast<sockaddr_in*>(res->ai_addr);
478 in_addr* addr = &sock_addr->sin_addr;
474 479
475 cmd_buffer[2] = addr->s_addr; 480 cmd_buffer[2] = addr->s_addr;
476 cmd_buffer[1] = 0; 481 cmd_buffer[1] = 0;
482 freeaddrinfo(res);
477} 483}
478 484
479static void Close(Service::Interface* self) { 485static void Close(Service::Interface* self) {