From 25f9ec7988e4f44cfd123ef5e4eaf9f8761b5174 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 24 Jan 2017 20:43:03 +1000 Subject: [PATCH] * validate placeholders --- src/config.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config.c b/src/config.c index dd887b6..765fb24 100644 --- a/src/config.c +++ b/src/config.c @@ -87,6 +87,18 @@ int parse_config(oal_config_t * const config, const char *file) { config->basedn = strndup(value, valsize); } else if (strncmp(key, "userfilter", 10) == 0) { + char *p = value; + size_t matches = 0; + while ((p = strchr(p, '%')) != NULL) { + if (strncmp(p, "%u", 2) == 0) { + p++, *p = 's'; /* %u -> %s */ + matches++; + } else { + return oal_error(config, "unknown placeholder in userfilter here -> %s", p); + } + } + if (matches > 1) + return oal_error(config, "multiple '%%u' placeholders in userfilter"); config->userfilter = strndup(value, valsize); } else { return oal_error(config, "unknown key '%s' at line %d", key, linenum);