--- acpid-1.0.8.orig/event.c +++ acpid-1.0.8/event.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -90,6 +91,8 @@ struct dirent *dirent; char *file = NULL; int nrules = 0; + char *basen = NULL; + regex_t preg; lock_rules(); @@ -139,10 +142,19 @@ continue; /* skip non-regular files */ } - r = parse_file(file); - if (r) { - enlist_rule(&cmd_list, r); - nrules++; + /* check for run-parts style filename */ + basen = basename(file); + if (regcomp(&preg, "^[a-zA-Z0-9_-]+$", RULE_REGEX_FLAGS) == 0){ + if (regexec(&preg, basen, 0, NULL, 0) == 0){ + r = parse_file(file); + if (r) { + enlist_rule(&cmd_list, r); + nrules++; + } + } else { + acpid_log(LOG_DEBUG, "ignoring conf file %s\n", file); + } + } free(file); }