diff options
Diffstat (limited to 'source3/rpc_server')
-rwxr-xr-x | source3/rpc_server/srv_spoolss.c | 11 | ||||
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 5 |
2 files changed, 14 insertions, 2 deletions
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c index 1cf187d825..1649df8608 100755 --- a/source3/rpc_server/srv_spoolss.c +++ b/source3/rpc_server/srv_spoolss.c @@ -759,6 +759,17 @@ static BOOL api_spoolss_addprinterex(uint16 vuid, prs_struct *data, prs_struct * return False; } + if (q_u.info.info_ptr!=0) { + switch (q_u.info.level) { + case 1: + safe_free(q_u.info.info_1); + break; + case 2: + safe_free(q_u.info.info_2); + break; + } + } + return True; } diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 340d776493..de994a1b5d 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -2855,9 +2855,10 @@ uint32 _spoolss_setprinter(const POLICY_HND *handle, uint32 level, case 2: return update_printer(handle, level, info, devmode_ctr.devmode); break; + default: + return ERROR_INVALID_LEVEL; + break; } - - return NT_STATUS_INVALID_INFO_CLASS; } /**************************************************************************** |