s3-spoolss: Fix _spoolss_EnumPrinters servername handling.
[kai/samba.git] / source3 / rpc_server / srv_spoolss_nt.c
index 49ca8c2c2be42e06217e15797bccef5141f2617d..9d9a148a028fbdc06bf61f9dfc34a874a8faae11 100644 (file)
@@ -315,7 +315,7 @@ static WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const c
        reload_services(false);
        unbecome_root();
 
-       if ( lp_servicenumber( sharename )  < 0 )
+       if ( lp_servicenumber( sharename )  > 0 )
                return WERR_ACCESS_DENIED;
 
        return WERR_OK;
@@ -4281,7 +4281,7 @@ static WERROR enumprinters_level5(TALLOC_CTX *mem_ctx,
 WERROR _spoolss_EnumPrinters(pipes_struct *p,
                             struct spoolss_EnumPrinters *r)
 {
-       const char *name;
+       const char *name = NULL;
        WERROR result;
 
        /* that's an [in out] buffer */
@@ -4309,8 +4309,10 @@ WERROR _spoolss_EnumPrinters(pipes_struct *p,
         * Level 5: same as Level 2
         */
 
-       name = talloc_strdup_upper(p->mem_ctx, r->in.server);
-       W_ERROR_HAVE_NO_MEMORY(name);
+       if (r->in.server) {
+               name = talloc_strdup_upper(p->mem_ctx, r->in.server);
+               W_ERROR_HAVE_NO_MEMORY(name);
+       }
 
        switch (r->in.level) {
        case 0: