if (security_token_has_sid(token, sd->owner_sid)) {
switch (implicit_owner_rights) {
case IMPLICIT_OWNER_READ_CONTROL_AND_WRITE_DAC_RIGHTS:
- granted |= SEC_STD_WRITE_DAC;
- FALL_THROUGH;
+ granted |= (SEC_STD_READ_CONTROL |
+ SEC_STD_WRITE_DAC);
+ break;
case IMPLICIT_OWNER_READ_CONTROL_RIGHTS:
granted |= SEC_STD_READ_CONTROL;
break;
if (am_owner && !have_owner_rights_ace) {
switch (implicit_owner_rights) {
case IMPLICIT_OWNER_READ_CONTROL_AND_WRITE_DAC_RIGHTS:
- granted |= SEC_STD_WRITE_DAC;
- FALL_THROUGH;
+ granted |= (SEC_STD_READ_CONTROL | SEC_STD_WRITE_DAC);
+ break;
case IMPLICIT_OWNER_READ_CONTROL_RIGHTS:
granted |= SEC_STD_READ_CONTROL;
break;
if (am_owner && !have_owner_rights_ace) {
switch (implicit_owner_rights) {
case IMPLICIT_OWNER_READ_CONTROL_AND_WRITE_DAC_RIGHTS:
- bits_remaining &= ~SEC_STD_WRITE_DAC;
- FALL_THROUGH;
+ bits_remaining &= ~(SEC_STD_WRITE_DAC |
+ SEC_STD_READ_CONTROL);
+ break;
case IMPLICIT_OWNER_READ_CONTROL_RIGHTS:
bits_remaining &= ~SEC_STD_READ_CONTROL;
break;
security_token_has_sid(token, sd->owner_sid)) {
switch (implicit_owner_rights) {
case IMPLICIT_OWNER_READ_CONTROL_AND_WRITE_DAC_RIGHTS:
- bits_remaining &= ~SEC_STD_WRITE_DAC;
- FALL_THROUGH;
+ bits_remaining &= ~(SEC_STD_WRITE_DAC |
+ SEC_STD_READ_CONTROL);
+ break;
case IMPLICIT_OWNER_READ_CONTROL_RIGHTS:
bits_remaining &= ~SEC_STD_READ_CONTROL;
break;