aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/firejail/macros.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/firejail/macros.c b/src/firejail/macros.c
index 874180ad1..ccd201956 100644
--- a/src/firejail/macros.c
+++ b/src/firejail/macros.c
@@ -275,12 +275,19 @@ void invalid_filename(const char *fname, int globbing) {
275 return; 275 return;
276 } 276 }
277 277
278 size_t i;
279 for (i = 0; ptr[i]; i++) {
280 if (iscntrl((unsigned char) ptr[i])) {
281 fprintf(stderr, "Error: invalid filename: contains a control character\n");
282 exit(1);
283 }
284 }
285
278 char *reject; 286 char *reject;
279 if (globbing) 287 if (globbing)
280 reject = "\\&!\"'<>%^(){};,"; // file globbing ('*?[]') is allowed 288 reject = "\\&!\"'<>%^(){};,"; // file globbing ('*?[]') is allowed
281 else 289 else
282 reject = "\\&!?\"'<>%^(){};,*[]"; 290 reject = "\\&!?\"'<>%^(){};,*[]";
283
284 char *c = strpbrk(ptr, reject); 291 char *c = strpbrk(ptr, reject);
285 if (c) { 292 if (c) {
286 fprintf(stderr, "Error: \"%s\" is an invalid filename: rejected character: \"%c\"\n", ptr, *c); 293 fprintf(stderr, "Error: \"%s\" is an invalid filename: rejected character: \"%c\"\n", ptr, *c);