From: Daniel Salzman Date: Mon, 31 May 2021 12:52:07 +0000 (+0200) Subject: libknot/probe: fix send() data length for resend in knot_probe_produce() X-Git-Tag: v3.1.0~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a2663aa69f3e617832f89ef53bd2c3bcb7ca85d;p=thirdparty%2Fknot-dns.git libknot/probe: fix send() data length for resend in knot_probe_produce() --- diff --git a/src/libknot/probe/probe.c b/src/libknot/probe/probe.c index 478a7d1fc2..36c7b815c6 100644 --- a/src/libknot/probe/probe.c +++ b/src/libknot/probe/probe.c @@ -158,14 +158,14 @@ int knot_probe_produce(knot_probe_t *probe, const knot_probe_data_t *data, uint8 return KNOT_EINVAL; } - uint8_t diff = KNOT_DNAME_MAXLEN - data->query.qname_len; - if (send(probe->fd, data, sizeof(*data) - diff, 0) == -1) { + size_t used_len = sizeof(*data) - KNOT_DNAME_MAXLEN + data->query.qname_len; + if (send(probe->fd, data, used_len, 0) == -1) { struct timespec now = time_now(); if (now.tv_sec - probe->last_unconn_time > 2) { probe->last_unconn_time = now.tv_sec; if ((errno == ENOTCONN || errno == ECONNREFUSED) && probe_connect(probe) == 0 && - send(probe->fd, data, sizeof(*data), 0) > 0) { + send(probe->fd, data, used_len, 0) > 0) { return KNOT_EOK; } }