Fix regression introduced with NFSv4 ACL support - make acl_to_text(3)
and acl_calc_mask(3) return error instead of crashing when acl passed to them is NULL. Submitted by: markus Reviewed by: rwatson MFC after: 3 days
This commit is contained in:
parent
2e7de50933
commit
59831d7595
@ -50,12 +50,6 @@ acl_calc_mask(acl_t *acl_p)
|
||||
acl_t acl_new;
|
||||
int i, mask_mode, mask_num;
|
||||
|
||||
if (!_acl_brand_may_be(*acl_p, ACL_BRAND_POSIX)) {
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
_acl_brand_as(*acl_p, ACL_BRAND_POSIX);
|
||||
|
||||
/*
|
||||
* (23.4.2.4) requires acl_p to point to a pointer to a valid ACL.
|
||||
* Since one of the primary reasons to use this function would be
|
||||
@ -67,6 +61,13 @@ acl_calc_mask(acl_t *acl_p)
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (!_acl_brand_may_be(*acl_p, ACL_BRAND_POSIX)) {
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
_acl_brand_as(*acl_p, ACL_BRAND_POSIX);
|
||||
|
||||
acl_int = &(*acl_p)->ats_acl;
|
||||
if ((acl_int->acl_cnt < 3) || (acl_int->acl_cnt > ACL_MAX_ENTRIES)) {
|
||||
errno = EINVAL;
|
||||
|
@ -70,11 +70,6 @@ _posix1e_acl_to_text(acl_t acl, ssize_t *len_p, int flags)
|
||||
if (buf == NULL)
|
||||
return(NULL);
|
||||
|
||||
if (acl == NULL) {
|
||||
errno = EINVAL;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
acl_int = &acl->ats_acl;
|
||||
|
||||
mask_perm = ACL_PERM_BITS; /* effective is regular if no mask */
|
||||
@ -243,6 +238,11 @@ char *
|
||||
acl_to_text_np(acl_t acl, ssize_t *len_p, int flags)
|
||||
{
|
||||
|
||||
if (acl == NULL) {
|
||||
errno = EINVAL;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
switch (_acl_brand(acl)) {
|
||||
case ACL_BRAND_POSIX:
|
||||
return (_posix1e_acl_to_text(acl, len_p, flags));
|
||||
|
Loading…
Reference in New Issue
Block a user