summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2016-11-11 16:29:20 +0100
committerJeremy Allison <jra@samba.org>2016-11-11 22:57:22 +0100
commit73f664710a8c9b312a54d0cf41d2f4440c8b42eb (patch)
tree94e9c8db0f7e9f73bf538bf999682b31d9bdfac2
parent2611fd02a0a6a0a0a506df70fe1a1eb4a2e76062 (diff)
downloadsamba-73f664710a8c9b312a54d0cf41d2f4440c8b42eb.tar.gz
spoolss: Use correct values for secdesc and devmode pointers
ULONG_PTR needs to be decoded as a uint3264 and not as a 'uint32 *'. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11197 Guenther Pair-Programmed-With: Andreas Schneider <asn@samba.org> Signed-off-by: Guenther Deschner <gd@samba.org> Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--librpc/idl/spoolss.idl20
-rw-r--r--source3/rpc_client/init_spoolss.c4
-rw-r--r--source3/rpcclient/cmd_spoolss.c4
-rw-r--r--source4/torture/rpc/spoolss.c14
-rw-r--r--source4/torture/rpc/spoolss_notify.c4
5 files changed, 23 insertions, 23 deletions
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index df19bee6334..6ab8f0331d0 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -1011,9 +1011,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
[string,charset(UTF16)] uint16 *print_processor;
[string,charset(UTF16)] uint16 *parameters;
[string,charset(UTF16)] uint16 *driver_name;
- uint32 *_devmode_ptr; /* pointer to truncated devicemode */
+ uint3264 _devmode_ptr; /* ULONG_PTR */
[string,charset(UTF16)] uint16 *text_status;
- uint32 *_secdesc_ptr;
+ uint3264 _secdesc_ptr; /* ULONG_PTR */
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
@@ -1037,9 +1037,9 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
[string,charset(UTF16)] uint16 *print_processor;
[string,charset(UTF16)] uint16 *parameters;
[string,charset(UTF16)] uint16 *driver_name;
- uint32 *_devmode_ptr; /* pointer to truncated devicemode */
+ uint3264 _devmode_ptr; /* ULONG_PTR */
[string,charset(UTF16)] uint16 *text_status;
- uint32 *_secdesc_ptr;
+ uint3264 _secdesc_ptr; /* ULONG_PTR */
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
@@ -1201,12 +1201,12 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
[string,charset(UTF16)] uint16 *drivername;
[string,charset(UTF16)] uint16 *comment;
[string,charset(UTF16)] uint16 *location;
- uint32 *devmode_ptr;
+ uint3264 devmode_ptr; /* ULONG_PTR */
[string,charset(UTF16)] uint16 *sepfile;
[string,charset(UTF16)] uint16 *printprocessor;
[string,charset(UTF16)] uint16 *datatype;
[string,charset(UTF16)] uint16 *parameters;
- uint32 *secdesc_ptr;
+ uint3264 secdesc_ptr; /* ULONG_PTR */
spoolss_PrinterAttributes attributes;
[range(0,99)] uint32 priority;
uint32 defaultpriority;
@@ -1218,7 +1218,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
} spoolss_SetPrinterInfo2;
typedef struct {
- uint32 *sec_desc_ptr;
+ uint3264 sec_desc_ptr; /* ULONG_PTR */
} spoolss_SetPrinterInfo3;
typedef struct {
@@ -1245,11 +1245,11 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
} spoolss_SetPrinterInfo7;
typedef struct {
- uint32 *devmode_ptr;
+ uint3264 devmode_ptr; /* ULONG_PTR */
} spoolss_SetPrinterInfo8;
typedef struct {
- uint32 *devmode_ptr;
+ uint3264 devmode_ptr; /* ULONG_PTR */
} spoolss_SetPrinterInfo9;
typedef [ms_union,switch_type(uint32)] union {
@@ -2307,7 +2307,7 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
/* Function: 0x27 */
WERROR spoolss_DeletePort(
[in,unique] [string,charset(UTF16)] uint16 *server_name,
- [in] uint32 ptr,
+ [in] uint3264 ptr, /* ULONG_PTR */
[in,ref] [string,charset(UTF16)] uint16 *port_name
);
diff --git a/source3/rpc_client/init_spoolss.c b/source3/rpc_client/init_spoolss.c
index 512cc567aae..d80d453fb23 100644
--- a/source3/rpc_client/init_spoolss.c
+++ b/source3/rpc_client/init_spoolss.c
@@ -157,12 +157,12 @@ void spoolss_printerinfo2_to_setprinterinfo2(const struct spoolss_PrinterInfo2 *
s->drivername = i->drivername;
s->comment = i->comment;
s->location = i->location;
- s->devmode_ptr = NULL;
+ s->devmode_ptr = 0;
s->sepfile = i->sepfile;
s->printprocessor = i->printprocessor;
s->datatype = i->datatype;
s->parameters = i->parameters;
- s->secdesc_ptr = NULL;
+ s->secdesc_ptr = 0;
s->attributes = i->attributes;
s->priority = i->priority;
s->defaultpriority = i->defaultpriority;
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 55d41c8342c..00dc2e0e817 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1893,8 +1893,8 @@ static WERROR cmd_spoolss_addprinterex(struct rpc_pipe_client *cli,
info2.comment = "Created by rpcclient";
info2.printprocessor = "winprint";
info2.datatype = "RAW";
- info2.devmode_ptr = NULL;
- info2.secdesc_ptr = NULL;
+ info2.devmode_ptr = 0;
+ info2.secdesc_ptr = 0;
info2.attributes = PRINTER_ATTRIBUTE_SHARED;
info2.priority = 0;
info2.defaultpriority = 0;
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index dc3391788fd..28abd14b7de 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -244,12 +244,12 @@ static bool PrinterInfo_to_SetPrinterInfo(struct torture_context *tctx,
s->info2->drivername = i->info2.drivername;
s->info2->comment = i->info2.comment;
s->info2->location = i->info2.location;
- s->info2->devmode_ptr = NULL;
+ s->info2->devmode_ptr = 0;
s->info2->sepfile = i->info2.sepfile;
s->info2->printprocessor = i->info2.printprocessor;
s->info2->datatype = i->info2.datatype;
s->info2->parameters = i->info2.parameters;
- s->info2->secdesc_ptr = NULL;
+ s->info2->secdesc_ptr = 0;
s->info2->attributes = i->info2.attributes;
s->info2->priority = i->info2.priority;
s->info2->defaultpriority = i->info2.defaultpriority;
@@ -1459,8 +1459,8 @@ static bool test_SetPrinter_errors(struct torture_context *tctx,
static void clear_info2(struct spoolss_SetPrinterInfoCtr *r)
{
if ((r->level == 2) && (r->info.info2)) {
- r->info.info2->secdesc_ptr = NULL;
- r->info.info2->devmode_ptr = NULL;
+ r->info.info2->secdesc_ptr = 0;
+ r->info.info2->devmode_ptr = 0;
}
}
@@ -1933,7 +1933,7 @@ static bool test_sd_set_level(struct torture_context *tctx,
}
case 3: {
- info3.sec_desc_ptr = NULL;
+ info3.sec_desc_ptr = 0;
info_ctr.level = 3;
info_ctr.info.info3 = &info3;
@@ -2104,7 +2104,7 @@ static bool test_devmode_set_level(struct torture_context *tctx,
case 8: {
struct spoolss_SetPrinterInfo8 info8;
- info8.devmode_ptr = NULL;
+ info8.devmode_ptr = 0;
info_ctr.level = 8;
info_ctr.info.info8 = &info8;
@@ -8231,7 +8231,7 @@ static bool test_set_printer_printserverhandle(struct torture_context *tctx,
secdesc_ctr.sd = sd;
- info3.sec_desc_ptr = NULL;
+ info3.sec_desc_ptr = 0;
info_ctr.level = 3;
info_ctr.info.info3 = &info3;
diff --git a/source4/torture/rpc/spoolss_notify.c b/source4/torture/rpc/spoolss_notify.c
index 945e653af75..928b61935aa 100644
--- a/source4/torture/rpc/spoolss_notify.c
+++ b/source4/torture/rpc/spoolss_notify.c
@@ -391,12 +391,12 @@ static bool test_SetPrinter(struct torture_context *tctx,
info2.drivername = info.info2.drivername;
info2.comment = talloc_asprintf(tctx, "torture_comment %d\n", (int)time(NULL));
info2.location = info.info2.location;
- info2.devmode_ptr = NULL;
+ info2.devmode_ptr = 0;
info2.sepfile = info.info2.sepfile;
info2.printprocessor = info.info2.printprocessor;
info2.datatype = info.info2.datatype;
info2.parameters = info.info2.parameters;
- info2.secdesc_ptr = NULL;
+ info2.secdesc_ptr = 0;
info2.attributes = info.info2.attributes;
info2.priority = info.info2.priority;
info2.defaultpriority = info.info2.defaultpriority;