mirror of
https://github.com/samba-team/samba.git
synced 2024-12-29 11:21:54 +03:00
Changes from APPLIANCE_HEAD:
source/rpc_server/srv_spoolss_nt.c - Changed the se_access_check() call in _spoolss_open_printer_ex() to a print_access_check(). This allows the 'printer admins' smb.conf and other permission override parameters to affect the result of a printer open. - Don't perform access check when opening a handle on a print server as it breaks browsing the Printers folder.
This commit is contained in:
parent
b4c98196fc
commit
bbe51d4b5f
@ -669,10 +669,8 @@ uint32 _spoolss_open_printer_ex( const UNISTR2 *printername,
|
||||
POLICY_HND *handle)
|
||||
{
|
||||
uint32 result = NT_STATUS_NO_PROBLEMO;
|
||||
SEC_DESC_BUF *sec_desc = NULL;
|
||||
uint32 acc_granted, status;
|
||||
fstring name;
|
||||
extern struct current_user current_user;
|
||||
int snum;
|
||||
|
||||
if (printername == NULL) {
|
||||
result = ERROR_INVALID_PRINTER_NAME;
|
||||
@ -729,29 +727,22 @@ uint32 _spoolss_open_printer_ex( const UNISTR2 *printername,
|
||||
}
|
||||
|
||||
/* NT doesn't let us connect to a printer if the connecting user
|
||||
doesn't have print permission. If no security descriptor just
|
||||
return OK. */
|
||||
doesn't have print permission. */
|
||||
|
||||
if (!nt_printing_getsec(name, &sec_desc)) {
|
||||
goto done;
|
||||
}
|
||||
if (!handle_is_printserver(handle)) {
|
||||
|
||||
/* Yuck - we should use the pipe_user rather than current_user but
|
||||
it doesn't seem to be filled in correctly. )-: */
|
||||
if (!get_printer_snum(handle, &snum))
|
||||
return ERROR_INVALID_HANDLE;
|
||||
|
||||
map_printer_permissions(sec_desc->sec);
|
||||
|
||||
if (!se_access_check(sec_desc->sec, ¤t_user, PRINTER_ACCESS_USE,
|
||||
&acc_granted, &status)) {
|
||||
if (!print_access_check(NULL, snum, PRINTER_ACCESS_USE)) {
|
||||
DEBUG(3, ("access DENIED for printer open\n"));
|
||||
close_printer_handle(handle);
|
||||
result = ERROR_ACCESS_DENIED;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
free_sec_desc_buf(&sec_desc);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user