From 6bd8682423b3da288dda2f19816b23970387c1da Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Sat, 29 Mar 2008 22:10:28 -0400 Subject: [PATCH] src/log.c: Avoid recursive logging. (Allocator failures can lead to some nasty recursive logging attempts.) --- src/log.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/log.c b/src/log.c index fe9f74a..736360d 100644 --- a/src/log.c +++ b/src/log.c @@ -51,6 +51,7 @@ struct log_type { unsigned int log_count; unsigned int max_age; unsigned int max_count; + unsigned int depth; unsigned int default_set : 1; }; @@ -569,6 +570,9 @@ log_module(struct log_type *type, enum log_severity sev, const char *format, ... if (!type) return; + if (type->depth) + return; + ++type->depth; if (sev > LOG_FATAL) { log_module(MAIN_LOG, LOG_ERROR, "Illegal log_module severity %d", sev); return; @@ -589,6 +593,7 @@ log_module(struct log_type *type, enum log_severity sev, const char *format, ... /* Special behavior before we start full operation */ fprintf(stderr, "%s: %s\n", log_severity_names[sev], msgbuf); } + --type->depth; if (sev == LOG_FATAL) { assert(0 && "fatal message logged"); _exit(1); -- 2.20.1