From: Eric Biggers Date: Sun, 7 Jun 2015 14:38:19 +0000 (-0500) Subject: extract.c: control characters are invalid in filenames on Windows X-Git-Tag: v1.8.2~64 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=f03f71aeaedbe90772338635cc221bf065f356c6;hp=9b53e465be528eb95ede2c464e603f5d79873794 extract.c: control characters are invalid in filenames on Windows --- 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