You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
7 years ago
|
diff -up sudo-1.8.6p3/plugins/sudoers/ldap.c.confparse sudo-1.8.6p3/plugins/sudoers/ldap.c
|
||
|
--- sudo-1.8.6p3/plugins/sudoers/ldap.c.confparse 2012-11-23 15:46:41.801008370 +0100
|
||
|
+++ sudo-1.8.6p3/plugins/sudoers/ldap.c 2012-11-23 15:46:07.903885738 +0100
|
||
|
@@ -1343,6 +1343,32 @@ sudo_ldap_parse_keyword(const char *keyw
|
||
|
debug_return_bool(false);
|
||
|
}
|
||
|
|
||
|
+/*
|
||
|
+ * Read a line of input, remove whole line comments and strip off leading
|
||
|
+ * and trailing spaces. Returns static storage that is reused.
|
||
|
+ */
|
||
|
+static char *
|
||
|
+sudo_ldap_parseln(FILE *fp)
|
||
|
+{
|
||
|
+ size_t len;
|
||
|
+ char *cp = NULL;
|
||
|
+ static char buf[LINE_MAX];
|
||
|
+
|
||
|
+ if (fgets(buf, sizeof(buf), fp) != NULL) {
|
||
|
+ /* Remove comments */
|
||
|
+ if (*buf == '#')
|
||
|
+ *buf = '\0';
|
||
|
+
|
||
|
+ /* Trim leading and trailing whitespace/newline */
|
||
|
+ len = strlen(buf);
|
||
|
+ while (len > 0 && isspace((unsigned char)buf[len - 1]))
|
||
|
+ buf[--len] = '\0';
|
||
|
+ for (cp = buf; isblank(*cp); cp++)
|
||
|
+ continue;
|
||
|
+ }
|
||
|
+ return(cp);
|
||
|
+}
|
||
|
+
|
||
|
static bool
|
||
|
sudo_ldap_read_config(void)
|
||
|
{
|
||
|
@@ -1364,7 +1390,7 @@ sudo_ldap_read_config(void)
|
||
|
if ((fp = fopen(_PATH_LDAP_CONF, "r")) == NULL)
|
||
|
debug_return_bool(false);
|
||
|
|
||
|
- while ((cp = sudo_parseln(fp)) != NULL) {
|
||
|
+ while ((cp = sudo_ldap_parseln(fp)) != NULL) {
|
||
|
if (*cp == '\0')
|
||
|
continue; /* skip empty line */
|
||
|
|