diff --git a/doas.c b/doas.c index 73e84d0..a2f2105 100644 --- a/doas.c +++ b/doas.c @@ -214,10 +214,15 @@ parseconfdir(const char *dirpath, int checkperms) for (i = 0; i < dirent_count; i++) { struct stat sb; + size_t pathlen; - snprintf(pathbuf, sizeof pathbuf, "%s/%s", dirpath, dirent_table[i]->d_name); + pathlen = snprintf(pathbuf, sizeof pathbuf, "%s/%s", dirpath, dirent_table[i]->d_name); free(dirent_table[i]); + /* make sure path ends in .conf */ + if (strcmp(pathbuf + (pathlen - 5), ".conf")) + continue; + if (stat(pathbuf, &sb) != 0) err(1, "stat(\"%s\")", pathbuf);