}
if (posix_ctxt) {
- struct create_context *posix_ccontext;
-
- posix_ccontext = (struct create_context *)(rsp->Buffer +
- le32_to_cpu(rsp->CreateContextsLength));
contxt_cnt++;
create_posix_rsp_buf(rsp->Buffer +
le32_to_cpu(rsp->CreateContextsLength),
return;
/* validate that we do not go past end of acl */
- if (end_of_acl < (char *)pdacl + le16_to_cpu(pdacl->size)) {
+ if (end_of_acl <= (char *)pdacl ||
+ end_of_acl < (char *)pdacl + le16_to_cpu(pdacl->size)) {
ksmbd_err("ACL too small to parse DACL\n");
return;
}
struct smb_acl *dacl_ptr; /* no need for SACL ptr */
char *end_of_acl = ((char *)pntsd) + acl_len;
__u32 dacloffset;
- int total_ace_size = 0, pntsd_type;
+ int pntsd_type;
if (pntsd == NULL)
return -EIO;
le32_to_cpu(pntsd->gsidoffset),
le32_to_cpu(pntsd->sacloffset), dacloffset);
- if (dacloffset) {
- if (end_of_acl <= (char *)dacl_ptr ||
- end_of_acl < (char *)dacl_ptr + le16_to_cpu(dacl_ptr->size))
- return -EIO;
- total_ace_size =
- le16_to_cpu(dacl_ptr->size) - sizeof(struct smb_acl);
- }
-
pntsd_type = le16_to_cpu(pntsd->type);
-
if (!(pntsd_type & DACL_PRESENT)) {
ksmbd_debug(SMB, "DACL_PRESENT in DACL type is not set\n");
return rc;