diff --git a/include/ntfs-3g/endians.h b/include/ntfs-3g/endians.h index 91fda48d..06f932f3 100644 --- a/include/ntfs-3g/endians.h +++ b/include/ntfs-3g/endians.h @@ -338,4 +338,6 @@ #define le16_xor(a, b) ((a) ^ (b)) +#define le32_xor(a, b) ((a) ^ (b)) + #endif /* defined _NTFS_ENDIANS_H */ diff --git a/libntfs-3g/security.c b/libntfs-3g/security.c index 6c33480b..5ae58fc6 100644 --- a/libntfs-3g/security.c +++ b/libntfs-3g/security.c @@ -4435,7 +4435,7 @@ int ntfs_set_ntfs_attrib(ntfs_inode *ni, * and set index root accordingly */ settable = le32_or(settable, FILE_ATTR_COMPRESSED); - if (!le32_andz(ni->flags ^ cpu_to_le32(attrib), + if (!le32_andz(le32_xor(ni->flags, cpu_to_le32(attrib)), FILE_ATTR_COMPRESSED)) { if (!le32_andz(ni->flags, FILE_ATTR_COMPRESSED)) dirflags = const_cpu_to_le16(0); @@ -5040,7 +5040,7 @@ BOOL ntfs_set_file_attributes(struct SECURITY_API *scapi, * and set index root accordingly */ settable = le32_or(settable, FILE_ATTR_COMPRESSED); - if (!le32_andz(ni->flags ^ cpu_to_le32(attrib), + if (!le32_andz(le32_xor(ni->flags, cpu_to_le32(attrib)), FILE_ATTR_COMPRESSED)) { if (!le32_andz(ni->flags, FILE_ATTR_COMPRESSED)) dirflags = const_cpu_to_le16(0);