]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/io: check for bad udp reads
authorMarek Vavruša <marek.vavrusa@nic.cz>
Sat, 9 May 2015 19:44:16 +0000 (21:44 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Sat, 9 May 2015 19:44:16 +0000 (21:44 +0200)
daemon/io.c

index a62bea6997a3fda9d9ff1ce1e236a3be01c06e7a..3a6071b55837db0cf0ce4eefa75d1ab723d06939 100644 (file)
@@ -53,6 +53,11 @@ void udp_recv(uv_udp_t *handle, ssize_t nread, const uv_buf_t *buf,
 {
        uv_loop_t *loop = handle->loop;
        struct worker_ctx *worker = loop->data;
+       if (nread <= 0) {
+               worker_exec(worker, (uv_handle_t *)handle, NULL, addr);
+               return;
+       }
+
        knot_pkt_t *query = knot_pkt_new(buf->base, nread, worker->mm);
        query->max_size = sizeof(worker->bufs.wire);
        worker_exec(worker, (uv_handle_t *)handle, query, addr);