1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-06 13:18:07 +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>
(back-ported from commit 75e7da9741)
This commit is contained in:
Uri Simchoni 2017-12-05 20:56:49 +02:00 committed by Karolin Seeger
parent e64528a915
commit a3dc640c9d

View File

@ -26,8 +26,14 @@ struct vfs_handle_struct;
struct files_struct;
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 struct smb_acl_t *SMB_ACL_T;