summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2010-02-16 02:48:01 +0100
committerKarolin Seeger <kseeger@samba.org>2010-02-19 14:32:32 +0100
commita8120a076bdf619eb4b8a82a8aaeb1ce29616b64 (patch)
tree1e33df3e32337a07857a01b653c0dd2813ee782e
parentd1d3171b08ac4b2b43f579908aa1c7197d3d5ee7 (diff)
downloadsamba-a8120a076bdf619eb4b8a82a8aaeb1ce29616b64.tar.gz
spoolss: add spoolss_security_descriptor.
Guenther (cherry picked from commit 28817424935e5b6eaf465fe993dedc2b0a0cf177) (cherry picked from commit 412ff72854040d5f619e978ce65c60f50f980f2b)
-rw-r--r--librpc/gen_ndr/ndr_spoolss.c88
-rw-r--r--librpc/gen_ndr/spoolss.h9
-rw-r--r--librpc/idl/spoolss.idl11
-rw-r--r--librpc/ndr/ndr_spoolss_buf.c56
-rw-r--r--librpc/ndr/ndr_spoolss_buf.h3
5 files changed, 115 insertions, 52 deletions
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index dadb3e3cb8b..f0efef7fe03 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -1546,10 +1546,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, i
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_push_spoolss_PrinterAttributes(ndr, NDR_SCALARS, r->attributes));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
@@ -1688,19 +1688,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo2(struct ndr_push *ndr, i
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
{
struct ndr_push *_ndr_secdesc;
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -1881,7 +1881,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
if (_ptr_secdesc) {
@@ -1890,7 +1890,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
} else {
r->secdesc = NULL;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_pull_spoolss_PrinterAttributes(ndr, NDR_SCALARS, &r->attributes));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
@@ -2092,7 +2092,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
uint32_t _relative_save_offset;
@@ -2103,13 +2103,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo2(struct ndr_pull *ndr, i
{
struct ndr_pull *_ndr_secdesc;
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
ndr->offset = _relative_save_offset;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -2194,7 +2194,7 @@ _PUBLIC_ void ndr_print_spoolss_PrinterInfo2(struct ndr_print *ndr, const char *
ndr_print_ptr(ndr, "secdesc", r->secdesc);
ndr->depth++;
if (r->secdesc) {
- ndr_print_security_descriptor(ndr, "secdesc", r->secdesc);
+ ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
}
ndr->depth--;
ndr_print_spoolss_PrinterAttributes(ndr, "attributes", r->attributes);
@@ -2218,28 +2218,28 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_PrinterInfo3(struct ndr_push *ndr, i
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 5));
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_push_trailer_align(ndr, 5));
}
if (ndr_flags & NDR_BUFFERS) {
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
{
struct ndr_push *_ndr_secdesc;
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -2252,7 +2252,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo3(struct ndr_pull *ndr, i
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 5));
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
if (_ptr_secdesc) {
@@ -2261,13 +2261,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo3(struct ndr_pull *ndr, i
} else {
r->secdesc = NULL;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
}
if (ndr_flags & NDR_BUFFERS) {
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
uint32_t _relative_save_offset;
@@ -2278,13 +2278,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_PrinterInfo3(struct ndr_pull *ndr, i
{
struct ndr_pull *_ndr_secdesc;
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
ndr->offset = _relative_save_offset;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -2297,7 +2297,7 @@ _PUBLIC_ void ndr_print_spoolss_PrinterInfo3(struct ndr_print *ndr, const char *
ndr_print_ptr(ndr, "secdesc", r->secdesc);
ndr->depth++;
if (r->secdesc) {
- ndr_print_security_descriptor(ndr, "secdesc", r->secdesc);
+ ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
}
ndr->depth--;
ndr->depth--;
@@ -3656,10 +3656,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
@@ -3790,19 +3790,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo2(struct ndr_push *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
{
struct ndr_push *_ndr_secdesc;
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -3970,7 +3970,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
if (_ptr_secdesc) {
@@ -3979,7 +3979,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
} else {
r->secdesc = NULL;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
@@ -4168,7 +4168,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
uint32_t _relative_save_offset;
@@ -4179,13 +4179,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo2(struct ndr_pull *ndr, int n
{
struct ndr_pull *_ndr_secdesc;
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
ndr->offset = _relative_save_offset;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -4265,7 +4265,7 @@ _PUBLIC_ void ndr_print_spoolss_JobInfo2(struct ndr_print *ndr, const char *name
ndr_print_ptr(ndr, "secdesc", r->secdesc);
ndr->depth++;
if (r->secdesc) {
- ndr_print_security_descriptor(ndr, "secdesc", r->secdesc);
+ ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
}
ndr->depth--;
ndr_print_spoolss_JobStatus(ndr, "status", r->status);
@@ -4401,10 +4401,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_push_relative_ptr1(ndr, r->secdesc));
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_push_spoolss_JobStatus(ndr, NDR_SCALARS, r->status));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
@@ -4536,19 +4536,19 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_JobInfo4(struct ndr_push *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->secdesc));
{
struct ndr_push *_ndr_secdesc;
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_push_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->secdesc));
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -4716,7 +4716,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
if (_ptr_secdesc) {
@@ -4725,7 +4725,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
} else {
r->secdesc = NULL;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
NDR_CHECK(ndr_pull_spoolss_JobStatus(ndr, NDR_SCALARS, &r->status));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
@@ -4915,7 +4915,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
ndr->flags = _flags_save_string;
}
{
- uint32_t _flags_save_security_descriptor = ndr->flags;
+ uint32_t _flags_save_spoolss_security_descriptor = ndr->flags;
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
if (r->secdesc) {
uint32_t _relative_save_offset;
@@ -4926,13 +4926,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_JobInfo4(struct ndr_pull *ndr, int n
{
struct ndr_pull *_ndr_secdesc;
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_secdesc, 0, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
+ NDR_CHECK(ndr_pull_spoolss_security_descriptor(_ndr_secdesc, NDR_SCALARS|NDR_BUFFERS, r->secdesc));
NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_secdesc, 0, -1));
}
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
ndr->offset = _relative_save_offset;
}
- ndr->flags = _flags_save_security_descriptor;
+ ndr->flags = _flags_save_spoolss_security_descriptor;
}
}
return NDR_ERR_SUCCESS;
@@ -5012,7 +5012,7 @@ _PUBLIC_ void ndr_print_spoolss_JobInfo4(struct ndr_print *ndr, const char *name
ndr_print_ptr(ndr, "secdesc", r->secdesc);
ndr->depth++;
if (r->secdesc) {
- ndr_print_security_descriptor(ndr, "secdesc", r->secdesc);
+ ndr_print_spoolss_security_descriptor(ndr, "secdesc", r->secdesc);
}
ndr->depth--;
ndr_print_spoolss_JobStatus(ndr, "status", r->status);
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 5f5c5373ceb..7c69f57c0de 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -7,6 +7,7 @@
#include "librpc/gen_ndr/misc.h"
#include "librpc/gen_ndr/security.h"
#include "librpc/gen_ndr/winreg.h"
+#define spoolss_security_descriptor security_descriptor
#ifndef _HEADER_spoolss
#define _HEADER_spoolss
@@ -821,7 +822,7 @@ struct spoolss_PrinterInfo2 {
const char * printprocessor;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
const char * datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
const char * parameters;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
- struct security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
uint32_t attributes;
uint32_t priority;/* [range(0,99)] */
uint32_t defaultpriority;
@@ -833,7 +834,7 @@ struct spoolss_PrinterInfo2 {
}/* [gensize,public] */;
struct spoolss_PrinterInfo3 {
- struct security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
}/* [gensize,public] */;
struct spoolss_PrinterInfo4 {
@@ -917,7 +918,7 @@ struct spoolss_JobInfo2 {
const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
- struct security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
uint32_t status;
uint32_t priority;/* [range(0,99)] */
uint32_t position;
@@ -949,7 +950,7 @@ struct spoolss_JobInfo4 {
const char * driver_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
struct spoolss_DeviceMode *devmode;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
const char * text_status;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
- struct security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
+ struct spoolss_security_descriptor *secdesc;/* [relative,subcontext(0),flag(LIBNDR_FLAG_ALIGN4)] */
uint32_t status;
uint32_t priority;/* [range(0,99)] */
uint32_t position;
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index 3365ea33195..48162097ccb 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -5,6 +5,9 @@
*/
import "misc.idl", "security.idl", "winreg.idl";
+
+cpp_quote("#define spoolss_security_descriptor security_descriptor")
+
[ uuid("12345678-1234-abcd-ef00-0123456789ab"),
version(1.0),
endpoint("ncacn_np:[\\pipe\\spoolss]"),
@@ -478,7 +481,7 @@ import "misc.idl", "security.idl", "winreg.idl";
[relative] nstring *printprocessor;
[relative] nstring *datatype;
[relative] nstring *parameters;
- [relative,subcontext(0),flag(NDR_ALIGN4)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_PrinterAttributes attributes;
[range(0,99)] uint32 priority;
uint32 defaultpriority;
@@ -490,7 +493,7 @@ import "misc.idl", "security.idl", "winreg.idl";
} spoolss_PrinterInfo2;
typedef [public,gensize] struct {
- [relative,subcontext(0),flag(NDR_ALIGN4)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
} spoolss_PrinterInfo3;
typedef [public,gensize] struct {
@@ -621,7 +624,7 @@ import "misc.idl", "security.idl", "winreg.idl";
[relative] nstring *driver_name;
[relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
[relative] nstring *text_status;
- [relative,subcontext(0),flag(NDR_ALIGN4)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
@@ -653,7 +656,7 @@ import "misc.idl", "security.idl", "winreg.idl";
[relative] nstring *driver_name;
[relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_DeviceMode *devmode;
[relative] nstring *text_status;
- [relative,subcontext(0),flag(NDR_ALIGN4)] security_descriptor *secdesc;
+ [relative,subcontext(0),flag(NDR_ALIGN4)] spoolss_security_descriptor *secdesc;
spoolss_JobStatus status;
[range(0,99)] uint32 priority;
uint32 position;
diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
index e6c0acf2245..788b20ab6f1 100644
--- a/librpc/ndr/ndr_spoolss_buf.c
+++ b/librpc/ndr/ndr_spoolss_buf.c
@@ -24,6 +24,7 @@
#include "includes.h"
#include "librpc/gen_ndr/ndr_spoolss.h"
+#include "librpc/gen_ndr/ndr_security.h"
#if (_SAMBA_BUILD_ >= 4)
#include "param/param.h"
#endif
@@ -1376,3 +1377,58 @@ _PUBLIC_ size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r,
return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterData, ic);
}
+void ndr_print_spoolss_security_descriptor(struct ndr_print *ndr, const char *name, const struct security_descriptor *r)
+{
+ ndr_print_security_descriptor(ndr, name, r);
+}
+
+enum ndr_err_code ndr_pull_spoolss_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r)
+{
+ uint32_t _flags_save_STRUCT = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NO_RELATIVE_REVERSE);
+ NDR_CHECK(ndr_pull_security_descriptor(ndr, ndr_flags, r));
+ ndr->flags = _flags_save_STRUCT;
+ return NDR_ERR_SUCCESS;
+}
+
+enum ndr_err_code ndr_push_spoolss_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r)
+{
+ {
+ uint32_t _flags_save_STRUCT = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN|LIBNDR_FLAG_NO_RELATIVE_REVERSE);
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_push_align(ndr, 5));
+ NDR_CHECK(ndr_push_security_descriptor_revision(ndr, NDR_SCALARS, r->revision));
+ NDR_CHECK(ndr_push_security_descriptor_type(ndr, NDR_SCALARS, r->type));
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->owner_sid));
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->group_sid));
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sacl));
+ NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dacl));
+ NDR_CHECK(ndr_push_trailer_align(ndr, 5));
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ if (r->sacl) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->sacl));
+ NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->sacl));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->sacl));
+ }
+ if (r->dacl) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->dacl));
+ NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->dacl));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->dacl));
+ }
+ if (r->owner_sid) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->owner_sid));
+ NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->owner_sid));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->owner_sid));
+ }
+ if (r->group_sid) {
+ NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->group_sid));
+ NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->group_sid));
+ NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->group_sid));
+ }
+ }
+ ndr->flags = _flags_save_STRUCT;
+ }
+ return NDR_ERR_SUCCESS;
+}
diff --git a/librpc/ndr/ndr_spoolss_buf.h b/librpc/ndr/ndr_spoolss_buf.h
index a53ab7bb8ce..948e910edf4 100644
--- a/librpc/ndr/ndr_spoolss_buf.h
+++ b/librpc/ndr/ndr_spoolss_buf.h
@@ -54,6 +54,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo101(struct ndr_push *ndr,
_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo101(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo101 *r);
void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, const union spoolss_Field *r);
size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t level, struct smb_iconv_convenience *ic, int flags);
+void ndr_print_spoolss_security_descriptor(struct ndr_print *ndr, const char *name, const struct security_descriptor *r);
+enum ndr_err_code ndr_pull_spoolss_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r);
+enum ndr_err_code ndr_push_spoolss_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r);
#undef _PRINTF_ATTRIBUTE
#define _PRINTF_ATTRIBUTE(a1, a2)