From be4d62e9a4e584b1a51a90b35554493b09e12b6e Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sat, 29 Jan 2022 10:50:03 -0700 Subject: [PATCH] Check for garbage after [section] in sudo_logsrvd.conf. --- logsrvd/logsrvd_conf.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/logsrvd/logsrvd_conf.c b/logsrvd/logsrvd_conf.c index 993c4b4f6..ec67d5392 100644 --- a/logsrvd/logsrvd_conf.c +++ b/logsrvd/logsrvd_conf.c @@ -1169,14 +1169,21 @@ logsrvd_conf_parse(struct logsrvd_config *config, FILE *fp, const char *path) /* New section */ if (line[0] == '[') { - char *section_name = line + 1; - char *cp = strchr(section_name, ']'); - if (cp == NULL) { + char *cp, *section_name = line + 1; + + if ((ep = strchr(section_name, ']')) == NULL) { sudo_warnx(U_("%s:%d unmatched '[': %s"), path, lineno, line); goto done; } - *cp = '\0'; + for (cp = ep + 1; *cp != '\0'; cp++) { + if (!isspace((unsigned char)*cp)) { + sudo_warnx(U_("%s:%d garbage after ']': %s"), + path, lineno, line); + goto done; + } + } + *ep = '\0'; for (conf_section = logsrvd_config_sections; conf_section->name != NULL; conf_section++) { if (strcasecmp(section_name, conf_section->name) == 0)