Commit 146619b42 for clamav.net
commit 146619b42548c7bce8e8e030c9781e19de3b91a5
Author: qxp930712 <155530647+qxp930712@users.noreply.github.com>
Date: Tue Aug 18 08:11:57 2026 +0800
libfreshclam: fix use-after-free in fc_cleanup on init failure (#1801)
fc_cleanup() frees g_signVerifier but does not set it to NULL.
When fc_initialize() fails, fc_cleanup() is called internally
and then again by freshclam at exit, causing a double free
that results in a segmentation fault.
Set g_signVerifier to NULL after freeing it, matching the
pattern used by other pointers in fc_cleanup().
Triggered when freshclam cannot write to the database directory.
Co-authored-by: caimengci <caimengci@uniontech.com>
diff --git a/libfreshclam/libfreshclam.c b/libfreshclam/libfreshclam.c
index cba2bf5ae..467fc4bc8 100644
--- a/libfreshclam/libfreshclam.c
+++ b/libfreshclam/libfreshclam.c
@@ -353,6 +353,7 @@ void fc_cleanup(void)
}
if (NULL != g_signVerifier) {
codesign_verifier_free(g_signVerifier);
+ g_signVerifier = NULL;
}
}