ksmbd: fix heap-based overflow in set_ntacl_dacl()
[platform/kernel/linux-rpi.git] / fs / ksmbd / smbacl.h
index eba1ebb..fcb2c83 100644 (file)
@@ -193,7 +193,7 @@ struct posix_acl_state {
 int parse_sec_desc(struct user_namespace *user_ns, struct smb_ntsd *pntsd,
                   int acl_len, struct smb_fattr *fattr);
 int build_sec_desc(struct user_namespace *user_ns, struct smb_ntsd *pntsd,
-                  struct smb_ntsd *ppntsd, int addition_info,
+                  struct smb_ntsd *ppntsd, int ppntsd_size, int addition_info,
                   __u32 *secdesclen, struct smb_fattr *fattr);
 int init_acl_state(struct posix_acl_state *state, int cnt);
 void free_acl_state(struct posix_acl_state *state);
@@ -217,7 +217,7 @@ static inline uid_t posix_acl_uid_translate(struct user_namespace *mnt_userns,
        kuid_t kuid;
 
        /* If this is an idmapped mount, apply the idmapping. */
-       kuid = kuid_into_mnt(mnt_userns, pace->e_uid);
+       kuid = mapped_kuid_fs(mnt_userns, &init_user_ns, pace->e_uid);
 
        /* Translate the kuid into a userspace id ksmbd would see. */
        return from_kuid(&init_user_ns, kuid);
@@ -229,7 +229,7 @@ static inline gid_t posix_acl_gid_translate(struct user_namespace *mnt_userns,
        kgid_t kgid;
 
        /* If this is an idmapped mount, apply the idmapping. */
-       kgid = kgid_into_mnt(mnt_userns, pace->e_gid);
+       kgid = mapped_kgid_fs(mnt_userns, &init_user_ns, pace->e_gid);
 
        /* Translate the kgid into a userspace id ksmbd would see. */
        return from_kgid(&init_user_ns, kgid);