From 92e962430b32daa8d1eae7f6da1be8785792a3ee Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 8 Aug 2025 01:03:31 +0300 Subject: [PATCH] LibC: Make sockaddr and sockaddr_in compatible with other systems sockaddr: make sa_data is 14 bytes on all systems sockaddr_in: add sin_zero --- userspace/libraries/LibC/include/netinet/in.h | 1 + userspace/libraries/LibC/include/sys/socket.h | 4 ++-- userspace/programs/resolver/main.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/userspace/libraries/LibC/include/netinet/in.h b/userspace/libraries/LibC/include/netinet/in.h index b2539d4e..07ed38d8 100644 --- a/userspace/libraries/LibC/include/netinet/in.h +++ b/userspace/libraries/LibC/include/netinet/in.h @@ -87,6 +87,7 @@ struct sockaddr_in sa_family_t sin_family; /* AF_INET. */ in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* IP address. */ + unsigned char sin_zero[8]; }; struct in6_addr diff --git a/userspace/libraries/LibC/include/sys/socket.h b/userspace/libraries/LibC/include/sys/socket.h index d140fc7a..960ba13f 100644 --- a/userspace/libraries/LibC/include/sys/socket.h +++ b/userspace/libraries/LibC/include/sys/socket.h @@ -24,8 +24,8 @@ __BEGIN_DECLS struct sockaddr { - sa_family_t sa_family; /* Address family. */ - char sa_data[0]; /* Socket address (variable-length data). */ + sa_family_t sa_family; /* Address family. */ + char sa_data[14]; /* Socket address (variable-length data). */ }; struct sockaddr_storage diff --git a/userspace/programs/resolver/main.cpp b/userspace/programs/resolver/main.cpp index e0407815..51ed2f12 100644 --- a/userspace/programs/resolver/main.cpp +++ b/userspace/programs/resolver/main.cpp @@ -442,6 +442,7 @@ int main(int, char**) .sin_family = AF_INET, .sin_port = 0, .sin_addr = { .s_addr = resolved->raw }, + .sin_zero = {}, }; if (send(client.socket, &addr, sizeof(addr), 0) == -1) @@ -489,6 +490,7 @@ int main(int, char**) .sin_family = AF_INET, .sin_port = 0, .sin_addr = { .s_addr = result->raw }, + .sin_zero = {}, }; if (send(client.socket, &addr, sizeof(addr), 0) == -1)