[CIFS] Fix walking out end of cifs dacl
Acked-by: Shirish Pargaonkar <shirishp@us.ibm.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
@@ -327,7 +327,7 @@ static int parse_sec_desc(struct cifs_ntsd *pntsd, int acl_len,
|
|||||||
group_sid_ptr = (struct cifs_sid *)((char *)pntsd +
|
group_sid_ptr = (struct cifs_sid *)((char *)pntsd +
|
||||||
le32_to_cpu(pntsd->gsidoffset));
|
le32_to_cpu(pntsd->gsidoffset));
|
||||||
dacloffset = le32_to_cpu(pntsd->dacloffset);
|
dacloffset = le32_to_cpu(pntsd->dacloffset);
|
||||||
dacl_ptr = (struct cifs_acl *)(char *)pntsd + dacloffset;
|
dacl_ptr = (struct cifs_acl *)((char *)pntsd + dacloffset);
|
||||||
#ifdef CONFIG_CIFS_DEBUG2
|
#ifdef CONFIG_CIFS_DEBUG2
|
||||||
cFYI(1, ("revision %d type 0x%x ooffset 0x%x goffset 0x%x "
|
cFYI(1, ("revision %d type 0x%x ooffset 0x%x goffset 0x%x "
|
||||||
"sacloffset 0x%x dacloffset 0x%x",
|
"sacloffset 0x%x dacloffset 0x%x",
|
||||||
|
@@ -35,6 +35,9 @@
|
|||||||
#define UBITSHIFT 6
|
#define UBITSHIFT 6
|
||||||
#define GBITSHIFT 3
|
#define GBITSHIFT 3
|
||||||
|
|
||||||
|
#define ACCESS_ALLOWED 0
|
||||||
|
#define ACCESS_DENIED 1
|
||||||
|
|
||||||
struct cifs_ntsd {
|
struct cifs_ntsd {
|
||||||
__le16 revision; /* revision level */
|
__le16 revision; /* revision level */
|
||||||
__le16 type;
|
__le16 type;
|
||||||
|
@@ -125,9 +125,9 @@ E_md4hash(const unsigned char *passwd, unsigned char *p16)
|
|||||||
/* Password cannot be longer than 128 characters */
|
/* Password cannot be longer than 128 characters */
|
||||||
if (passwd) {
|
if (passwd) {
|
||||||
len = strlen((char *) passwd);
|
len = strlen((char *) passwd);
|
||||||
if (len > 128) {
|
if (len > 128)
|
||||||
len = 128;
|
len = 128;
|
||||||
}
|
|
||||||
/* Password must be converted to NT unicode */
|
/* Password must be converted to NT unicode */
|
||||||
_my_mbstowcs(wpwd, passwd, len);
|
_my_mbstowcs(wpwd, passwd, len);
|
||||||
} else
|
} else
|
||||||
@@ -189,8 +189,10 @@ ntv2_owf_gen(const unsigned char owf[16], const char *user_n,
|
|||||||
return;
|
return;
|
||||||
dom_u = user_u + 1024;
|
dom_u = user_u + 1024;
|
||||||
|
|
||||||
/* push_ucs2(NULL, user_u, user_n, (user_l+1)*2, STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER);
|
/* push_ucs2(NULL, user_u, user_n, (user_l+1)*2,
|
||||||
push_ucs2(NULL, dom_u, domain_n, (domain_l+1)*2, STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER); */
|
STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER);
|
||||||
|
push_ucs2(NULL, dom_u, domain_n, (domain_l+1)*2,
|
||||||
|
STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER); */
|
||||||
|
|
||||||
/* BB user and domain may need to be uppercased */
|
/* BB user and domain may need to be uppercased */
|
||||||
user_l = cifs_strtoUCS(user_u, user_n, 511, nls_codepage);
|
user_l = cifs_strtoUCS(user_u, user_n, 511, nls_codepage);
|
||||||
|
Reference in New Issue
Block a user