diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c index 8cf3d7d54b..3eb42c59eb 100644 --- a/src/libsystemd/sd-resolve/sd-resolve.c +++ b/src/libsystemd/sd-resolve/sd-resolve.c @@ -226,15 +226,7 @@ static int send_addrinfo_reply( int _errno, int _h_errno) { - AddrInfoResponse resp = { - .header.type = RESPONSE_ADDRINFO, - .header.id = id, - .header.length = sizeof(AddrInfoResponse), - .ret = ret, - ._errno = _errno, - ._h_errno = _h_errno, - }; - + AddrInfoResponse resp = {}; union { AddrInfoSerialization ais; uint8_t space[BUFSIZE]; @@ -244,6 +236,15 @@ static int send_addrinfo_reply( assert(out_fd >= 0); + resp = (AddrInfoResponse) { + .header.type = RESPONSE_ADDRINFO, + .header.id = id, + .header.length = sizeof(AddrInfoResponse), + .ret = ret, + ._errno = _errno, + ._h_errno = _h_errno, + }; + if (ret == 0 && ai) { void *p = &buffer; struct addrinfo *k; @@ -280,7 +281,7 @@ static int send_nameinfo_reply( int _errno, int _h_errno) { - NameInfoResponse resp; + NameInfoResponse resp = {}; struct iovec iov[3]; struct msghdr mh; size_t hl, sl; @@ -931,7 +932,7 @@ _public_ int sd_resolve_getaddrinfo( sd_resolve_getaddrinfo_handler_t callback, void *userdata) { _cleanup_(sd_resolve_query_unrefp) sd_resolve_query *q = NULL; - AddrInfoRequest req; + AddrInfoRequest req = {}; struct iovec iov[3]; struct msghdr mh = {}; int r; @@ -1008,7 +1009,7 @@ _public_ int sd_resolve_getnameinfo( void *userdata) { _cleanup_(sd_resolve_query_unrefp) sd_resolve_query *q = NULL; - NameInfoRequest req; + NameInfoRequest req = {}; struct iovec iov[2]; struct msghdr mh; int r;