From: Eric Biggers Date: Sat, 27 Apr 2013 04:23:11 +0000 (-0500) Subject: win32_set_special_attributes(): Skip compression IOCTL on encrypted files X-Git-Tag: v1.3.3~25 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=985a3a9191a07b8def58315afa5a88e71cf9f1d4;hp=d07c69b525404a9826caf386f27623eb894db989 win32_set_special_attributes(): Skip compression IOCTL on encrypted files --- diff --git a/src/win32.c b/src/win32.c index e9bdeeb8..a591dd60 100644 --- a/src/win32.c +++ b/src/win32.c @@ -1663,24 +1663,26 @@ win32_set_special_attributes(HANDLE hFile, const struct wim_inode *inode, { int ret; - if (vol_flags & FILE_FILE_COMPRESSION) { - - USHORT format; - if (inode->i_attributes & FILE_ATTRIBUTE_COMPRESSED) { - format = COMPRESSION_FORMAT_DEFAULT; - DEBUG("Setting compression flag on \"%ls\"", path); + /* Encrypted files cannot be [de]compressed. */ + if (!(inode->i_attributes & FILE_ATTRIBUTE_ENCRYPTED)) { + if (vol_flags & FILE_FILE_COMPRESSION) { + USHORT format; + if (inode->i_attributes & FILE_ATTRIBUTE_COMPRESSED) { + format = COMPRESSION_FORMAT_DEFAULT; + DEBUG("Setting compression flag on \"%ls\"", path); + } else { + format = COMPRESSION_FORMAT_NONE; + DEBUG("Clearing compression flag on \"%ls\"", path); + } + ret = win32_set_compression_state(hFile, format, path); + if (ret) + return ret; } else { - format = COMPRESSION_FORMAT_NONE; - DEBUG("Clearing compression flag on \"%ls\"", path); - } - ret = win32_set_compression_state(hFile, format, path); - if (ret) - return ret; - } else { - if (inode->i_attributes & FILE_ATTRIBUTE_COMPRESSED) { - DEBUG("Cannot set compression attribute on \"%ls\": " - "volume does not support transparent compression", - path); + if (inode->i_attributes & FILE_ATTRIBUTE_COMPRESSED) { + DEBUG("Cannot set compression attribute on \"%ls\": " + "volume does not support transparent compression", + path); + } } }