aboutsummaryrefslogtreecommitdiffstats
path: root/src/fbuilder/filedb.c
diff options
context:
space:
mode:
authorLibravatar smitsohu <smitsohu@gmail.com>2022-03-13 22:35:29 +0100
committerLibravatar smitsohu <smitsohu@gmail.com>2022-03-13 22:35:29 +0100
commit20910987363706a61c4d70586e3eb405076eca0f (patch)
tree6e4bf36353154fdc7265ed0d228015041dc440e8 /src/fbuilder/filedb.c
parentfbuilder: whitelist-run-common.inc and whitelist-runuser-common.inc support (diff)
downloadfirejail-20910987363706a61c4d70586e3eb405076eca0f.tar.gz
firejail-20910987363706a61c4d70586e3eb405076eca0f.tar.zst
firejail-20910987363706a61c4d70586e3eb405076eca0f.zip
fbuilder: whitelist globbing
Diffstat (limited to 'src/fbuilder/filedb.c')
-rw-r--r--src/fbuilder/filedb.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/fbuilder/filedb.c b/src/fbuilder/filedb.c
index 569095785..89b6980d2 100644
--- a/src/fbuilder/filedb.c
+++ b/src/fbuilder/filedb.c
@@ -25,17 +25,17 @@ FileDB *filedb_find(FileDB *head, const char *fname) {
25 assert(fname); 25 assert(fname);
26 FileDB *ptr = head; 26 FileDB *ptr = head;
27 int found = 0; 27 int found = 0;
28 int len = strlen(fname);
29 28
30 while (ptr) { 29 while (ptr) {
31 // exact name 30 // ptr->fname can be a pattern, like .mutter-Xwaylandauth.*
32 if (strcmp(fname, ptr->fname) == 0) { 31 // check if fname is a match
32 if (fnmatch(ptr->fname, fname, FNM_PATHNAME) == 0) {
33 found = 1; 33 found = 1;
34 break; 34 break;
35 } 35 }
36 36
37 // parent directory in the list 37 // parent directory in the list
38 if (len > ptr->len && 38 if (strlen(fname) > ptr->len &&
39 fname[ptr->len] == '/' && 39 fname[ptr->len] == '/' &&
40 strncmp(ptr->fname, fname, ptr->len) == 0) { 40 strncmp(ptr->fname, fname, ptr->len) == 0) {
41 found = 1; 41 found = 1;
@@ -54,8 +54,6 @@ FileDB *filedb_find(FileDB *head, const char *fname) {
54FileDB *filedb_add(FileDB *head, const char *fname) { 54FileDB *filedb_add(FileDB *head, const char *fname) {
55 assert(fname); 55 assert(fname);
56 56
57 // todo: support fnames such as ${RUNUSER}/.mutter-Xwaylandauth.*
58
59 // don't add it if it is already there or if the parent directory is already in the list 57 // don't add it if it is already there or if the parent directory is already in the list
60 if (filedb_find(head, fname)) 58 if (filedb_find(head, fname))
61 return head; 59 return head;