summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-11-15 20:56:18 +0000
committerAndrew Tridgell <tridge@samba.org>2003-11-15 20:56:18 +0000
commit5bd51a1d5d88459eca341d252f156fcf32bdc222 (patch)
tree9284956eb56bbbc151d18f4f917d8621ce80e3cc
parentc24f56e71c2d15ba0e41146abf4b0387a2461bac (diff)
downloadsamba-5bd51a1d5d88459eca341d252f156fcf32bdc222.tar.gz
samba-5bd51a1d5d88459eca341d252f156fcf32bdc222.tar.bz2
samba-5bd51a1d5d88459eca341d252f156fcf32bdc222.zip
the returned policy handle in spoolss_OpenPrinterEx() is pass by
reference (tim, my apoligies if this conflicts with an uncomitted fix from you) (This used to be commit fa0872e66359603a52813af13b45fdaeca98f5d0)
-rw-r--r--source4/librpc/idl/spoolss.idl2
-rw-r--r--source4/librpc/ndr/ndr_spoolss.c11
-rw-r--r--source4/torture/rpc/spoolss.c3
3 files changed, 5 insertions, 11 deletions
diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl
index 8f12b266cf..0c7b2ae548 100644
--- a/source4/librpc/idl/spoolss.idl
+++ b/source4/librpc/idl/spoolss.idl
@@ -384,7 +384,7 @@
[in] uint32 access_required,
[in] uint32 level,
[in,switch_is(level)] spoolss_UserLevel userlevel,
- [out] policy_handle *handle
+ [out,ref] policy_handle *handle
);
/******************/
diff --git a/source4/librpc/ndr/ndr_spoolss.c b/source4/librpc/ndr/ndr_spoolss.c
index d346ebd9b2..be3082d69e 100644
--- a/source4/librpc/ndr/ndr_spoolss.c
+++ b/source4/librpc/ndr/ndr_spoolss.c
@@ -1152,16 +1152,7 @@ NTSTATUS ndr_pull_spoolss_44(struct ndr_pull *ndr, struct spoolss_44 *r)
NTSTATUS ndr_pull_spoolss_OpenPrinterEx(struct ndr_pull *ndr, struct spoolss_OpenPrinterEx *r)
{
- uint32 _ptr_handle;
- NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_handle));
- if (_ptr_handle) {
- NDR_ALLOC(ndr, r->out.handle);
- } else {
- r->out.handle = NULL;
- }
- if (r->out.handle) {
- NDR_CHECK(ndr_pull_policy_handle(ndr, r->out.handle));
- }
+ NDR_CHECK(ndr_pull_policy_handle(ndr, r->out.handle));
NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result));
return NT_STATUS_OK;
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 83a7778a59..7f4809109a 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -25,6 +25,7 @@ static BOOL test_OpenPrinterEx(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
{
struct spoolss_OpenPrinterEx r;
struct spoolss_UserLevel1 userlevel1;
+ struct policy_handle handle;
NTSTATUS status;
r.in.printername = "p";
@@ -33,6 +34,8 @@ static BOOL test_OpenPrinterEx(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
r.in.devmode_ctr.devmode = NULL;
r.in.access_required = 0x12345678;
r.in.level = 1;
+ r.out.handle = &handle;
+
userlevel1.size = 1234;
userlevel1.client = "hello";
userlevel1.user = "spottyfoot!";