#include <stdlib.h>
#include "assert-util.h"
-#include "env-util.h"
#include "errno-util.h"
#include "log.h"
-static bool assert_return_is_critical = BUILD_MODE_DEVELOPER;
-
/* Akin to glibc's __abort_msg; which is private and we hence cannot
* use here. */
static char *log_abort_msg = NULL;
-void log_set_assert_return_is_critical(bool b) {
- assert_return_is_critical = b;
-}
-
-void log_set_assert_return_is_critical_from_env(void) {
- static int cached = INT_MIN;
- int r;
-
- if (cached == INT_MIN) {
- r = secure_getenv_bool("SYSTEMD_ASSERT_RETURN_IS_CRITICAL");
- if (r < 0 && r != -ENXIO)
- log_debug_errno(r, "Failed to parse $SYSTEMD_ASSERT_RETURN_IS_CRITICAL, ignoring: %m");
-
- cached = r;
- }
-
- if (cached >= 0)
- log_set_assert_return_is_critical(cached);
-}
-
-bool log_get_assert_return_is_critical(void) {
- return assert_return_is_critical;
-}
-
static void log_assert(
int level,
const char *text,
}
void log_assert_failed_return(const char *text, const char *file, int line, const char *func) {
-
- if (assert_return_is_critical)
+ /* log_get_assert_return_is_critical is a weak symbol. It may be NULL. */
+ if (log_get_assert_return_is_critical && log_get_assert_return_is_critical())
log_assert_failed(text, file, line, func);
PROTECT_ERRNO;
/* Logging for various assertions */
-void log_set_assert_return_is_critical(bool b);
-void log_set_assert_return_is_critical_from_env(void);
-bool log_get_assert_return_is_critical(void) _pure_;
+bool log_get_assert_return_is_critical(void) _weak_ _pure_;
void log_assert_failed_return(const char *text, const char *file, int line, const char *func);
#include "fileio.h"
#include "log.h"
+#include "log-assert-critical.h"
/* The entry point into the fuzzer */
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "env-util.h"
+#include "log.h"
+#include "log-assert-critical.h"
+
+static bool assert_return_is_critical = BUILD_MODE_DEVELOPER;
+
+void log_set_assert_return_is_critical(bool b) {
+ assert_return_is_critical = b;
+}
+
+void log_set_assert_return_is_critical_from_env(void) {
+ static int cached = INT_MIN;
+ int r;
+
+ if (cached == INT_MIN) {
+ r = secure_getenv_bool("SYSTEMD_ASSERT_RETURN_IS_CRITICAL");
+ if (r < 0 && r != -ENXIO)
+ log_debug_errno(r, "Failed to parse $SYSTEMD_ASSERT_RETURN_IS_CRITICAL, ignoring: %m");
+
+ cached = r;
+ }
+
+ if (cached >= 0)
+ log_set_assert_return_is_critical(cached);
+}
+
+bool log_get_assert_return_is_critical(void) {
+ return assert_return_is_critical;
+}
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include "basic-forward.h"
+
+void log_set_assert_return_is_critical(bool b);
+void log_set_assert_return_is_critical_from_env(void);
'libmount-util.c',
'local-addresses.c',
'locale-setup.c',
+ 'log-assert-critical.c',
'logs-show.c',
'loop-util.c',
'loopback-setup.c',
#include "assert-util.h"
#include "log.h"
+#include "log-assert-critical.h"
#include "nss-util.h"
sd_json_dispatch_flags_t nss_json_dispatch_flags = SD_JSON_ALLOW_EXTENSIONS;
#include "errno-util.h"
#include "shared-forward.h"
#include "log.h"
+#include "log-assert-critical.h"
#include "static-destruct.h"
#include "signal-util.h"
#include "stdio-util.h"