Dmitry Timoshkov dmitry@baikal.ru writes:
@@ -482,6 +482,17 @@ struct object *get_handle_obj( struct process *process, obj_handle_t handle, set_error( STATUS_OBJECT_TYPE_MISMATCH ); /* not the right type */ return NULL; }
if (access & (READ_CONTROL | WRITE_DAC)){const struct security_descriptor *sd = obj->ops->get_sd( obj );if (sd){struct token *token = current->token ? current->token : current->process->token;const SID *owner = sd_get_owner( sd );if (token_sid_present( token, owner, FALSE ))access &= ~(READ_CONTROL | WRITE_DAC);}}
That seems very ad-hoc. It would need more convincing tests.