From: Vladimír Čunát Date: Fri, 15 Nov 2019 12:25:27 +0000 (+0100) Subject: daemon/worker: add assertion X-Git-Tag: v4.3.0~11^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=298ade1e32600549f87c1b5a169f51248d635dee;p=thirdparty%2Fknot-resolver.git daemon/worker: add assertion It might detect some use-after-free cases even without ASAN. --- diff --git a/daemon/worker.c b/daemon/worker.c index 4bf105b55..df0f704e6 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -101,7 +101,12 @@ struct qr_task #define qr_task_ref(task) \ do { ++(task)->refs; } while(0) #define qr_task_unref(task) \ - do { if ((task) && --(task)->refs == 0) { qr_task_free((task)); } } while (0) + do { \ + if (task) \ + assert((task)->refs > 0); \ + if ((task) && --(task)->refs == 0) \ + qr_task_free((task)); \ + } while (0) /** @internal get key for tcp session * @note kr_straddr() return pointer to static string