]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
fixup! fix various mistakes found by static analysis
authorŠtěpán Balážik <stepan.balazik@nic.cz>
Sat, 29 Aug 2020 16:08:16 +0000 (18:08 +0200)
committerŠtěpán Balážik <stepan.balazik@nic.cz>
Thu, 15 Oct 2020 11:22:21 +0000 (13:22 +0200)
modules/stats/stats.c

index b4fd5d7f489185866518dfecb6e04c6758184f48..4154a8873fc96c437cf54b422de374b8fa2cb0c6 100644 (file)
@@ -158,11 +158,11 @@ static int collect_rtt(kr_layer_t *ctx, knot_pkt_t *pkt)
        /* Socket address is encoded into sockaddr_in6 struct that
         * unions with sockaddr_in and differ in sa_family */
        struct sockaddr_in6 *e = &data->upstreams.q.at[data->upstreams.head];
-       const struct sockaddr *src = &req->upstream.transport->address.ip;
-       switch (src->sa_family) {
-       case AF_INET:  memcpy(e, src, sizeof(struct sockaddr_in)); break;
-       case AF_INET6: memcpy(e, src, sizeof(struct sockaddr_in6)); break;
-       default: return ctx->state;
+       const union inaddr *src = &req->upstream.transport->address;
+       switch (src->ip.sa_family) {
+               case AF_INET:  memcpy(e, &src->ip4, sizeof(src->ip4)); break;
+               case AF_INET6: memcpy(e, &src->ip6, sizeof(src->ip6)); break;
+               default: return ctx->state;
        }
        /* Replace port number with the RTT information (cap is UINT16_MAX milliseconds) */
        e->sin6_rtt = req->upstream.rtt;