analyze: fix segfault when malloc() fails (#21874)

Fixes #21872.

log_syntax_callback sets 's', a.k.a. '*userdata', to POINTER_MAX to signal allocation failure.
If the error does not cause immediate failure of the program, and log_syntax_callback is called
again, it would try to use 's' as a pointer to a set and fail badly.
This commit is contained in:
Yu Watanabe
2021-12-23 21:03:16 +01:00
committed by GitHub
parent 10c8c32f13
commit 558ad6bd38
+3
View File
@@ -26,6 +26,9 @@ static void log_syntax_callback(const char *unit, int level, void *userdata) {
if (level > LOG_WARNING)
return;
if (*s == POINTER_MAX)
return;
r = set_put_strdup(s, unit);
if (r < 0) {
set_free_free(*s);