aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar smitsohu <smitsohu@gmail.com>2020-01-17 02:42:08 +0100
committerLibravatar GitHub <noreply@github.com>2020-01-17 02:42:08 +0100
commit3e9bdd3ca9383a1b6d3495aed0821d4f881eead3 (patch)
tree68de0b2152de0fd9797fb61a724e414c8e67559b
parentAdd comment to sylpheed.profile for supporting non-default storage path (diff)
downloadfirejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.tar.gz
firejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.tar.zst
firejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.zip
print rejected character in invalid filenames
-rw-r--r--src/firejail/macros.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/firejail/macros.c b/src/firejail/macros.c
index 9ed6b9715..874180ad1 100644
--- a/src/firejail/macros.c
+++ b/src/firejail/macros.c
@@ -275,19 +275,15 @@ void invalid_filename(const char *fname, int globbing) {
275 return; 275 return;
276 } 276 }
277 277
278 int len = strlen(ptr); 278 char *reject;
279 279 if (globbing)
280 if (globbing) { 280 reject = "\\&!\"'<>%^(){};,"; // file globbing ('*?[]') is allowed
281 // file globbing ('*?[]') is allowed 281 else
282 if (strcspn(ptr, "\\&!\"'<>%^(){};,") != (size_t)len) { 282 reject = "\\&!?\"'<>%^(){};,*[]";
283 fprintf(stderr, "Error: \"%s\" is an invalid filename\n", ptr); 283
284 exit(1); 284 char *c = strpbrk(ptr, reject);
285 } 285 if (c) {
286 } 286 fprintf(stderr, "Error: \"%s\" is an invalid filename: rejected character: \"%c\"\n", ptr, *c);
287 else { 287 exit(1);
288 if (strcspn(ptr, "\\&!?\"'<>%^(){};,*[]") != (size_t)len) {
289 fprintf(stderr, "Error: \"%s\" is an invalid filename\n", ptr);
290 exit(1);
291 }
292 } 288 }
293} 289}