mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
sysacls: change datatypes to 32 bits
The SMB_ACL_PERMSET_T and SMB_ACL_PERM_T were defined as mode_t, which is 16-bits on some (non-Linux) systems. However, pidl *always* encodes mode_t as uint32_t. That created a bug on big-endian systems as sys_acl_get_permset() returns a SMB_ACL_PERMSET_T pointer to an internal a_perm structure member defined in IDL as a mode_t, which pidl turns into a uin32_t in the emitted header file. Changing to 32 bits fixes that. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13176 Signed-off-by: Uri Simchoni <uri@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
d6f5ee6707
commit
75e7da9741
@ -27,8 +27,14 @@ struct files_struct;
|
|||||||
struct smb_filename;
|
struct smb_filename;
|
||||||
|
|
||||||
typedef int SMB_ACL_TYPE_T;
|
typedef int SMB_ACL_TYPE_T;
|
||||||
typedef mode_t *SMB_ACL_PERMSET_T;
|
/*
|
||||||
typedef mode_t SMB_ACL_PERM_T;
|
* struct smb_acl_entry is defined in IDL as
|
||||||
|
* using mode_t values, pidl always converts these
|
||||||
|
* to uint32_t. Ensure the external type definitions
|
||||||
|
* match.
|
||||||
|
*/
|
||||||
|
typedef uint32_t *SMB_ACL_PERMSET_T;
|
||||||
|
typedef uint32_t SMB_ACL_PERM_T;
|
||||||
|
|
||||||
typedef enum smb_acl_tag_t SMB_ACL_TAG_T;
|
typedef enum smb_acl_tag_t SMB_ACL_TAG_T;
|
||||||
typedef struct smb_acl_t *SMB_ACL_T;
|
typedef struct smb_acl_t *SMB_ACL_T;
|
||||||
|
Loading…
Reference in New Issue
Block a user