summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2025-05-05 09:23:32 -0400
committerRich Felker <dalias@aerifal.cx>2025-05-05 09:23:32 -0400
commit6915b34860459a963fb1ba468a4d5389dd65c67b (patch)
tree56bcb6e9348dd5381b581b7bc64b14b69d48962a
parenta34ca6ead1f04283ebd04ffcc42f8dbc6995f2d1 (diff)
downloadmusl-6915b34860459a963fb1ba468a4d5389dd65c67b.tar.gz
dns resolver: reorder sockaddr union to make initialization safe
some recent compilers have adopted a dubious interpretation of the C specification for union initializers, that when the initialized member is smaller than the size of the union, the remaining padding does not have to be zero-initialized. in the interests of not depending on any particular interpretation, place the larger member first so it's initialized and ensures the whole object is zero-filled.
-rw-r--r--src/network/res_msend.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/res_msend.c b/src/network/res_msend.c
index 86c2fcf4..fcb52513 100644
--- a/src/network/res_msend.c
+++ b/src/network/res_msend.c
@@ -83,8 +83,8 @@ int __res_msend_rc(int nqueries, const unsigned char *const *queries,
int fd;
int timeout, attempts, retry_interval, servfail_retry;
union {
- struct sockaddr_in sin;
struct sockaddr_in6 sin6;
+ struct sockaddr_in sin;
} sa = {0}, ns[MAXNS] = {{0}};
socklen_t sl = sizeof sa.sin;
int nns = 0;