aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar smitsohu <smitsohu@gmail.com>2020-01-17 19:10:40 +0100
committerLibravatar GitHub <noreply@github.com>2020-01-17 19:10:40 +0100
commitdb16ce56f8b1c559dfac360600ef69d046682ed1 (patch)
treedf9359cc0ded72b32227e40ca95d75116761134a /src
parentprint rejected character in invalid filenames (diff)
downloadfirejail-db16ce56f8b1c559dfac360600ef69d046682ed1.tar.gz
firejail-db16ce56f8b1c559dfac360600ef69d046682ed1.tar.zst
firejail-db16ce56f8b1c559dfac360600ef69d046682ed1.zip
reject control characters in file names
Diffstat (limited to 'src')
-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);