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 d0e166fdf..d768a3fc7 100644
--- a/src/core/hle/service/soc_u.cpp
+++ b/src/core/hle/service/soc_u.cpp
@@ -481,11 +481,17 @@ static void GetHostId(Service::Interface* self) {
481 481
482 char name[128]; 482 char name[128];
483 gethostname(name, sizeof(name)); 483 gethostname(name, sizeof(name));
484 hostent* host = gethostbyname(name); 484 addrinfo hints = {};
485 in_addr* addr = reinterpret_cast<in_addr*>(host->h_addr); 485 addrinfo* res;
486
487 hints.ai_family = AF_INET;
488 getaddrinfo(name, NULL, &hints, &res);
489 sockaddr_in* sock_addr = reinterpret_cast<sockaddr_in*>(res->ai_addr);
490 in_addr* addr = &sock_addr->sin_addr;
486 491
487 cmd_buffer[2] = addr->s_addr; 492 cmd_buffer[2] = addr->s_addr;
488 cmd_buffer[1] = 0; 493 cmd_buffer[1] = 0;
494 freeaddrinfo(res);
489} 495}
490 496
491static void Close(Service::Interface* self) { 497static void Close(Service::Interface* self) {