diff options
author | smitsohu <smitsohu@gmail.com> | 2020-01-17 02:42:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-17 02:42:08 +0100 |
commit | 3e9bdd3ca9383a1b6d3495aed0821d4f881eead3 (patch) | |
tree | 68de0b2152de0fd9797fb61a724e414c8e67559b | |
parent | Add comment to sylpheed.profile for supporting non-default storage path (diff) | |
download | firejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.tar.gz firejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.tar.zst firejail-3e9bdd3ca9383a1b6d3495aed0821d4f881eead3.zip |
print rejected character in invalid filenames
-rw-r--r-- | src/firejail/macros.c | 24 |
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 | } |