From f03f71aeaedbe90772338635cc221bf065f356c6 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 7 Jun 2015 09:38:19 -0500 Subject: [PATCH] extract.c: control characters are invalid in filenames on Windows --- src/extract.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/extract.c b/src/extract.c index 706282e0..4f1c54a0 100644 --- a/src/extract.c +++ b/src/extract.c @@ -655,19 +655,20 @@ file_name_valid(utf16lechar *name, size_t num_chars, bool fix) if (num_chars == 0) return true; for (i = 0; i < num_chars; i++) { - switch (name[i]) { + switch (le16_to_cpu(name[i])) { #ifdef __WIN32__ - case cpu_to_le16('\\'): - case cpu_to_le16(':'): - case cpu_to_le16('*'): - case cpu_to_le16('?'): - case cpu_to_le16('"'): - case cpu_to_le16('<'): - case cpu_to_le16('>'): - case cpu_to_le16('|'): + case '\x01'...'\x1F': + case '\\': + case ':': + case '*': + case '?': + case '"': + case '<': + case '>': + case '|': #endif - case cpu_to_le16('/'): - case cpu_to_le16('\0'): + case '/': + case '\0': if (fix) name[i] = replacement_char; else -- 2.43.0