Merge pull request #23351 from keszybz/logind-message
logind: fix crash in logind on bad message string
This commit is contained in:
@@ -67,6 +67,10 @@ static bool prohibit_ipc = false;
|
||||
* use here. */
|
||||
static char *log_abort_msg = NULL;
|
||||
|
||||
#if LOG_MESSAGE_VERIFICATION || defined(__COVERITY__)
|
||||
bool _log_message_dummy = false; /* Always false */
|
||||
#endif
|
||||
|
||||
/* An assert to use in logging functions that does not call recursively
|
||||
* into our logging functions (since that might lead to a loop). */
|
||||
#define assert_raw(expr) \
|
||||
|
||||
+10
-2
@@ -298,8 +298,16 @@ int log_emergency_level(void);
|
||||
|
||||
bool log_on_console(void) _pure_;
|
||||
|
||||
/* Helper to prepare various field for structured logging */
|
||||
#define LOG_MESSAGE(fmt, ...) "MESSAGE=" fmt, ##__VA_ARGS__
|
||||
/* Helper to wrap the main message in structured logging. The macro doesn't do much,
|
||||
* except to provide visual grouping of the format string and its arguments. */
|
||||
#if LOG_MESSAGE_VERIFICATION || defined(__COVERITY__)
|
||||
/* Do a fake formatting of the message string to let the scanner verify the arguments against the format
|
||||
* message. The variable will never be set to true, but we don't tell the compiler that :) */
|
||||
extern bool _log_message_dummy;
|
||||
# define LOG_MESSAGE(fmt, ...) "MESSAGE=%.0d" fmt, (_log_message_dummy && printf(fmt, ##__VA_ARGS__)), ##__VA_ARGS__
|
||||
#else
|
||||
# define LOG_MESSAGE(fmt, ...) "MESSAGE=" fmt, ##__VA_ARGS__
|
||||
#endif
|
||||
|
||||
void log_received_signal(int level, const struct signalfd_siginfo *si);
|
||||
|
||||
|
||||
@@ -794,7 +794,7 @@ bool valid_user_group_name(const char *u, ValidUserFlags flags) {
|
||||
/* Compare with strict result and warn if result doesn't match */
|
||||
if (FLAGS_SET(flags, VALID_USER_WARN) && !valid_user_group_name(u, 0))
|
||||
log_struct(LOG_NOTICE,
|
||||
"MESSAGE=Accepting user/group name '%s', which does not match strict user/group name rules.", u,
|
||||
LOG_MESSAGE("Accepting user/group name '%s', which does not match strict user/group name rules.", u),
|
||||
"USER_GROUP_NAME=%s", u,
|
||||
"MESSAGE_ID=" SD_MESSAGE_UNSAFE_USER_NAME_STR);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user