If the acl_t struct was at or above 0x80000000 then the pointer was
sign-extended to 0xffff_ffff_8000_0000 and so the index was lost.
Signed-off-by: David Allsopp <david.allsopp@metastack.com>
--- /dev/null
+Bug Fixes:
+----------
+
+- Fix acl_get_* functions in 32-bit Cygwin (pointer sign extension)
inline acl_entry_t
__to_entry (acl_t acl, uint16_t idx)
{
- return ((uint64_t) idx << 48) | (uint64_t) acl;
+ return ((uint64_t) idx << 48) | (uint64_t) ((uintptr_t) acl);
}
#define __to_permset(a,i) ((acl_permset_t)__to_entry((a),(i)))