Vitaliy Margolen wrote:
- res = token_access_check( token, obj->sd, *access, &priv, &priv_count,
&mapping, access, &status ) == STATUS_SUCCESS &&status == STATUS_SUCCESS;- if (!res)
- {
fprintf( stderr, "access check failed\n" );set_error( STATUS_ACCESS_DENIED );- }
We don't want anything in the wineserver that can possibly spam the console, so this should be made conditional on debug_level being non-zero.
Also, is there any reason you return STATUS_ACCESS_DENIED instead of the statuses returned by token_access_check? Could you try writing a test that creates or opens an object with ACCESS_SYSTEM_SECURITY access and see if it returns STATUS_PRIVILEGE_NOT_HELD or STATUS_ACCESS_DENIED?
Robert Shearman wrote:
Vitaliy Margolen wrote:
- res = token_access_check( token, obj->sd, *access, &priv,
&priv_count,
&mapping, access, &status ) ==STATUS_SUCCESS &&
status == STATUS_SUCCESS;- if (!res)
- {
fprintf( stderr, "access check failed\n" );set_error( STATUS_ACCESS_DENIED );- }
We don't want anything in the wineserver that can possibly spam the console, so this should be made conditional on debug_level being non-zero.
In case we will have any problems related to security checks this will be really helpful troubleshooting them.
Also, is there any reason you return STATUS_ACCESS_DENIED instead of the statuses returned by token_access_check? Could you try writing a test that creates or opens an object with ACCESS_SYSTEM_SECURITY access and see if it returns STATUS_PRIVILEGE_NOT_HELD or STATUS_ACCESS_DENIED?
The two programs I'm fixing does not require this. Nor do we handle it properly anyway.
Vitaliy.