spoolss: fix spoolss_PrinterData size calculation.
[Samba/bb.git] / librpc / gen_ndr / ndr_security.c
blob5453d0c12b3960bfedcd057132b1d2273411e08e
1 /* parser auto-generated by pidl */
3 #include "includes.h"
4 #include "../librpc/gen_ndr/ndr_security.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 _PUBLIC_ enum ndr_err_code ndr_push_security_ace_flags(struct ndr_push *ndr, int ndr_flags, uint8_t r)
9 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r));
10 return NDR_ERR_SUCCESS;
13 _PUBLIC_ enum ndr_err_code ndr_pull_security_ace_flags(struct ndr_pull *ndr, int ndr_flags, uint8_t *r)
15 uint8_t v;
16 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
17 *r = v;
18 return NDR_ERR_SUCCESS;
21 _PUBLIC_ void ndr_print_security_ace_flags(struct ndr_print *ndr, const char *name, uint8_t r)
23 ndr_print_uint8(ndr, name, r);
24 ndr->depth++;
25 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_OBJECT_INHERIT", SEC_ACE_FLAG_OBJECT_INHERIT, r);
26 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_CONTAINER_INHERIT", SEC_ACE_FLAG_CONTAINER_INHERIT, r);
27 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_NO_PROPAGATE_INHERIT", SEC_ACE_FLAG_NO_PROPAGATE_INHERIT, r);
28 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_INHERIT_ONLY", SEC_ACE_FLAG_INHERIT_ONLY, r);
29 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_INHERITED_ACE", SEC_ACE_FLAG_INHERITED_ACE, r);
30 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_VALID_INHERIT", SEC_ACE_FLAG_VALID_INHERIT, r);
31 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_SUCCESSFUL_ACCESS", SEC_ACE_FLAG_SUCCESSFUL_ACCESS, r);
32 ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_FAILED_ACCESS", SEC_ACE_FLAG_FAILED_ACCESS, r);
33 ndr->depth--;
36 _PUBLIC_ enum ndr_err_code ndr_push_security_ace_type(struct ndr_push *ndr, int ndr_flags, enum security_ace_type r)
38 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
39 return NDR_ERR_SUCCESS;
42 _PUBLIC_ enum ndr_err_code ndr_pull_security_ace_type(struct ndr_pull *ndr, int ndr_flags, enum security_ace_type *r)
44 uint8_t v;
45 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
46 *r = v;
47 return NDR_ERR_SUCCESS;
50 _PUBLIC_ void ndr_print_security_ace_type(struct ndr_print *ndr, const char *name, enum security_ace_type r)
52 const char *val = NULL;
54 switch (r) {
55 case SEC_ACE_TYPE_ACCESS_ALLOWED: val = "SEC_ACE_TYPE_ACCESS_ALLOWED"; break;
56 case SEC_ACE_TYPE_ACCESS_DENIED: val = "SEC_ACE_TYPE_ACCESS_DENIED"; break;
57 case SEC_ACE_TYPE_SYSTEM_AUDIT: val = "SEC_ACE_TYPE_SYSTEM_AUDIT"; break;
58 case SEC_ACE_TYPE_SYSTEM_ALARM: val = "SEC_ACE_TYPE_SYSTEM_ALARM"; break;
59 case SEC_ACE_TYPE_ALLOWED_COMPOUND: val = "SEC_ACE_TYPE_ALLOWED_COMPOUND"; break;
60 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: val = "SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT"; break;
61 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: val = "SEC_ACE_TYPE_ACCESS_DENIED_OBJECT"; break;
62 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: val = "SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT"; break;
63 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: val = "SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT"; break;
65 ndr_print_enum(ndr, name, "ENUM", val, r);
68 static enum ndr_err_code ndr_push_security_ace_object_flags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
70 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
71 return NDR_ERR_SUCCESS;
74 static enum ndr_err_code ndr_pull_security_ace_object_flags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
76 uint32_t v;
77 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
78 *r = v;
79 return NDR_ERR_SUCCESS;
82 _PUBLIC_ void ndr_print_security_ace_object_flags(struct ndr_print *ndr, const char *name, uint32_t r)
84 ndr_print_uint32(ndr, name, r);
85 ndr->depth++;
86 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_ACE_OBJECT_TYPE_PRESENT", SEC_ACE_OBJECT_TYPE_PRESENT, r);
87 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT", SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT, r);
88 ndr->depth--;
91 static enum ndr_err_code ndr_push_security_ace_object_type(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_type *r)
93 if (ndr_flags & NDR_SCALARS) {
94 int level = ndr_push_get_switch_value(ndr, r);
95 NDR_CHECK(ndr_push_union_align(ndr, 4));
96 switch (level) {
97 case SEC_ACE_OBJECT_TYPE_PRESENT: {
98 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->type));
99 break; }
101 default: {
102 break; }
106 if (ndr_flags & NDR_BUFFERS) {
107 int level = ndr_push_get_switch_value(ndr, r);
108 switch (level) {
109 case SEC_ACE_OBJECT_TYPE_PRESENT:
110 break;
112 default:
113 break;
117 return NDR_ERR_SUCCESS;
120 static enum ndr_err_code ndr_pull_security_ace_object_type(struct ndr_pull *ndr, int ndr_flags, union security_ace_object_type *r)
122 int level;
123 level = ndr_pull_get_switch_value(ndr, r);
124 if (ndr_flags & NDR_SCALARS) {
125 NDR_CHECK(ndr_pull_union_align(ndr, 4));
126 switch (level) {
127 case SEC_ACE_OBJECT_TYPE_PRESENT: {
128 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->type));
129 break; }
131 default: {
132 break; }
136 if (ndr_flags & NDR_BUFFERS) {
137 switch (level) {
138 case SEC_ACE_OBJECT_TYPE_PRESENT:
139 break;
141 default:
142 break;
146 return NDR_ERR_SUCCESS;
149 _PUBLIC_ void ndr_print_security_ace_object_type(struct ndr_print *ndr, const char *name, const union security_ace_object_type *r)
151 int level;
152 level = ndr_print_get_switch_value(ndr, r);
153 ndr_print_union(ndr, name, level, "security_ace_object_type");
154 switch (level) {
155 case SEC_ACE_OBJECT_TYPE_PRESENT:
156 ndr_print_GUID(ndr, "type", &r->type);
157 break;
159 default:
160 break;
165 static enum ndr_err_code ndr_push_security_ace_object_inherited_type(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_inherited_type *r)
167 if (ndr_flags & NDR_SCALARS) {
168 int level = ndr_push_get_switch_value(ndr, r);
169 NDR_CHECK(ndr_push_union_align(ndr, 4));
170 switch (level) {
171 case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT: {
172 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->inherited_type));
173 break; }
175 default: {
176 break; }
180 if (ndr_flags & NDR_BUFFERS) {
181 int level = ndr_push_get_switch_value(ndr, r);
182 switch (level) {
183 case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT:
184 break;
186 default:
187 break;
191 return NDR_ERR_SUCCESS;
194 static enum ndr_err_code ndr_pull_security_ace_object_inherited_type(struct ndr_pull *ndr, int ndr_flags, union security_ace_object_inherited_type *r)
196 int level;
197 level = ndr_pull_get_switch_value(ndr, r);
198 if (ndr_flags & NDR_SCALARS) {
199 NDR_CHECK(ndr_pull_union_align(ndr, 4));
200 switch (level) {
201 case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT: {
202 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->inherited_type));
203 break; }
205 default: {
206 break; }
210 if (ndr_flags & NDR_BUFFERS) {
211 switch (level) {
212 case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT:
213 break;
215 default:
216 break;
220 return NDR_ERR_SUCCESS;
223 _PUBLIC_ void ndr_print_security_ace_object_inherited_type(struct ndr_print *ndr, const char *name, const union security_ace_object_inherited_type *r)
225 int level;
226 level = ndr_print_get_switch_value(ndr, r);
227 ndr_print_union(ndr, name, level, "security_ace_object_inherited_type");
228 switch (level) {
229 case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT:
230 ndr_print_GUID(ndr, "inherited_type", &r->inherited_type);
231 break;
233 default:
234 break;
239 static enum ndr_err_code ndr_push_security_ace_object(struct ndr_push *ndr, int ndr_flags, const struct security_ace_object *r)
241 if (ndr_flags & NDR_SCALARS) {
242 NDR_CHECK(ndr_push_align(ndr, 4));
243 NDR_CHECK(ndr_push_security_ace_object_flags(ndr, NDR_SCALARS, r->flags));
244 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->type, r->flags & SEC_ACE_OBJECT_TYPE_PRESENT));
245 NDR_CHECK(ndr_push_security_ace_object_type(ndr, NDR_SCALARS, &r->type));
246 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->inherited_type, r->flags & SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT));
247 NDR_CHECK(ndr_push_security_ace_object_inherited_type(ndr, NDR_SCALARS, &r->inherited_type));
248 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
250 if (ndr_flags & NDR_BUFFERS) {
251 NDR_CHECK(ndr_push_security_ace_object_type(ndr, NDR_BUFFERS, &r->type));
252 NDR_CHECK(ndr_push_security_ace_object_inherited_type(ndr, NDR_BUFFERS, &r->inherited_type));
254 return NDR_ERR_SUCCESS;
257 static enum ndr_err_code ndr_pull_security_ace_object(struct ndr_pull *ndr, int ndr_flags, struct security_ace_object *r)
259 if (ndr_flags & NDR_SCALARS) {
260 NDR_CHECK(ndr_pull_align(ndr, 4));
261 NDR_CHECK(ndr_pull_security_ace_object_flags(ndr, NDR_SCALARS, &r->flags));
262 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->type, r->flags & SEC_ACE_OBJECT_TYPE_PRESENT));
263 NDR_CHECK(ndr_pull_security_ace_object_type(ndr, NDR_SCALARS, &r->type));
264 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->inherited_type, r->flags & SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT));
265 NDR_CHECK(ndr_pull_security_ace_object_inherited_type(ndr, NDR_SCALARS, &r->inherited_type));
266 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
268 if (ndr_flags & NDR_BUFFERS) {
269 NDR_CHECK(ndr_pull_security_ace_object_type(ndr, NDR_BUFFERS, &r->type));
270 NDR_CHECK(ndr_pull_security_ace_object_inherited_type(ndr, NDR_BUFFERS, &r->inherited_type));
272 return NDR_ERR_SUCCESS;
275 _PUBLIC_ void ndr_print_security_ace_object(struct ndr_print *ndr, const char *name, const struct security_ace_object *r)
277 ndr_print_struct(ndr, name, "security_ace_object");
278 ndr->depth++;
279 ndr_print_security_ace_object_flags(ndr, "flags", r->flags);
280 ndr_print_set_switch_value(ndr, &r->type, r->flags & SEC_ACE_OBJECT_TYPE_PRESENT);
281 ndr_print_security_ace_object_type(ndr, "type", &r->type);
282 ndr_print_set_switch_value(ndr, &r->inherited_type, r->flags & SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT);
283 ndr_print_security_ace_object_inherited_type(ndr, "inherited_type", &r->inherited_type);
284 ndr->depth--;
287 _PUBLIC_ enum ndr_err_code ndr_push_security_ace_object_ctr(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_ctr *r)
289 if (ndr_flags & NDR_SCALARS) {
290 int level = ndr_push_get_switch_value(ndr, r);
291 NDR_CHECK(ndr_push_union_align(ndr, 4));
292 switch (level) {
293 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: {
294 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object));
295 break; }
297 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: {
298 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object));
299 break; }
301 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: {
302 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object));
303 break; }
305 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: {
306 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object));
307 break; }
309 default: {
310 break; }
314 if (ndr_flags & NDR_BUFFERS) {
315 int level = ndr_push_get_switch_value(ndr, r);
316 switch (level) {
317 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
318 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object));
319 break;
321 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
322 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object));
323 break;
325 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
326 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object));
327 break;
329 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
330 NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object));
331 break;
333 default:
334 break;
338 return NDR_ERR_SUCCESS;
341 _PUBLIC_ enum ndr_err_code ndr_pull_security_ace_object_ctr(struct ndr_pull *ndr, int ndr_flags, union security_ace_object_ctr *r)
343 int level;
344 level = ndr_pull_get_switch_value(ndr, r);
345 if (ndr_flags & NDR_SCALARS) {
346 NDR_CHECK(ndr_pull_union_align(ndr, 4));
347 switch (level) {
348 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: {
349 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_SCALARS, &r->object));
350 break; }
352 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: {
353 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_SCALARS, &r->object));
354 break; }
356 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: {
357 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_SCALARS, &r->object));
358 break; }
360 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: {
361 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_SCALARS, &r->object));
362 break; }
364 default: {
365 break; }
369 if (ndr_flags & NDR_BUFFERS) {
370 switch (level) {
371 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
372 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_BUFFERS, &r->object));
373 break;
375 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
376 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_BUFFERS, &r->object));
377 break;
379 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
380 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_BUFFERS, &r->object));
381 break;
383 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
384 NDR_CHECK(ndr_pull_security_ace_object(ndr, NDR_BUFFERS, &r->object));
385 break;
387 default:
388 break;
392 return NDR_ERR_SUCCESS;
395 _PUBLIC_ void ndr_print_security_ace_object_ctr(struct ndr_print *ndr, const char *name, const union security_ace_object_ctr *r)
397 int level;
398 level = ndr_print_get_switch_value(ndr, r);
399 ndr_print_union(ndr, name, level, "security_ace_object_ctr");
400 switch (level) {
401 case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT:
402 ndr_print_security_ace_object(ndr, "object", &r->object);
403 break;
405 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT:
406 ndr_print_security_ace_object(ndr, "object", &r->object);
407 break;
409 case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT:
410 ndr_print_security_ace_object(ndr, "object", &r->object);
411 break;
413 case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT:
414 ndr_print_security_ace_object(ndr, "object", &r->object);
415 break;
417 default:
418 break;
423 _PUBLIC_ enum ndr_err_code ndr_push_security_ace(struct ndr_push *ndr, int ndr_flags, const struct security_ace *r)
425 if (ndr_flags & NDR_SCALARS) {
426 NDR_CHECK(ndr_push_align(ndr, 4));
427 NDR_CHECK(ndr_push_security_ace_type(ndr, NDR_SCALARS, r->type));
428 NDR_CHECK(ndr_push_security_ace_flags(ndr, NDR_SCALARS, r->flags));
429 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_security_ace(r, ndr->iconv_convenience, ndr->flags)));
430 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->access_mask));
431 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->object, r->type));
432 NDR_CHECK(ndr_push_security_ace_object_ctr(ndr, NDR_SCALARS, &r->object));
433 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->trustee));
434 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
436 if (ndr_flags & NDR_BUFFERS) {
437 NDR_CHECK(ndr_push_security_ace_object_ctr(ndr, NDR_BUFFERS, &r->object));
439 return NDR_ERR_SUCCESS;
442 _PUBLIC_ void ndr_print_security_ace(struct ndr_print *ndr, const char *name, const struct security_ace *r)
444 ndr_print_struct(ndr, name, "security_ace");
445 ndr->depth++;
446 ndr_print_security_ace_type(ndr, "type", r->type);
447 ndr_print_security_ace_flags(ndr, "flags", r->flags);
448 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_security_ace(r, ndr->iconv_convenience, ndr->flags):r->size);
449 ndr_print_uint32(ndr, "access_mask", r->access_mask);
450 ndr_print_set_switch_value(ndr, &r->object, r->type);
451 ndr_print_security_ace_object_ctr(ndr, "object", &r->object);
452 ndr_print_dom_sid(ndr, "trustee", &r->trustee);
453 ndr->depth--;
456 static enum ndr_err_code ndr_push_security_acl_revision(struct ndr_push *ndr, int ndr_flags, enum security_acl_revision r)
458 NDR_CHECK(ndr_push_enum_uint1632(ndr, NDR_SCALARS, r));
459 return NDR_ERR_SUCCESS;
462 static enum ndr_err_code ndr_pull_security_acl_revision(struct ndr_pull *ndr, int ndr_flags, enum security_acl_revision *r)
464 uint16_t v;
465 NDR_CHECK(ndr_pull_enum_uint1632(ndr, NDR_SCALARS, &v));
466 *r = v;
467 return NDR_ERR_SUCCESS;
470 _PUBLIC_ void ndr_print_security_acl_revision(struct ndr_print *ndr, const char *name, enum security_acl_revision r)
472 const char *val = NULL;
474 switch (r) {
475 case SECURITY_ACL_REVISION_NT4: val = "SECURITY_ACL_REVISION_NT4"; break;
476 case SECURITY_ACL_REVISION_ADS: val = "SECURITY_ACL_REVISION_ADS"; break;
478 ndr_print_enum(ndr, name, "ENUM", val, r);
481 _PUBLIC_ enum ndr_err_code ndr_push_security_acl(struct ndr_push *ndr, int ndr_flags, const struct security_acl *r)
483 uint32_t cntr_aces_0;
484 if (ndr_flags & NDR_SCALARS) {
485 NDR_CHECK(ndr_push_align(ndr, 4));
486 NDR_CHECK(ndr_push_security_acl_revision(ndr, NDR_SCALARS, r->revision));
487 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, ndr_size_security_acl(r, ndr->iconv_convenience, ndr->flags)));
488 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_aces));
489 for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
490 NDR_CHECK(ndr_push_security_ace(ndr, NDR_SCALARS, &r->aces[cntr_aces_0]));
492 NDR_CHECK(ndr_push_trailer_align(ndr, 4));
494 if (ndr_flags & NDR_BUFFERS) {
495 for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
496 NDR_CHECK(ndr_push_security_ace(ndr, NDR_BUFFERS, &r->aces[cntr_aces_0]));
499 return NDR_ERR_SUCCESS;
502 _PUBLIC_ enum ndr_err_code ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct security_acl *r)
504 uint32_t cntr_aces_0;
505 TALLOC_CTX *_mem_save_aces_0;
506 if (ndr_flags & NDR_SCALARS) {
507 NDR_CHECK(ndr_pull_align(ndr, 4));
508 NDR_CHECK(ndr_pull_security_acl_revision(ndr, NDR_SCALARS, &r->revision));
509 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
510 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_aces));
511 if (r->num_aces > 1000) {
512 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
514 NDR_PULL_ALLOC_N(ndr, r->aces, r->num_aces);
515 _mem_save_aces_0 = NDR_PULL_GET_MEM_CTX(ndr);
516 NDR_PULL_SET_MEM_CTX(ndr, r->aces, 0);
517 for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
518 NDR_CHECK(ndr_pull_security_ace(ndr, NDR_SCALARS, &r->aces[cntr_aces_0]));
520 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_aces_0, 0);
521 NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
523 if (ndr_flags & NDR_BUFFERS) {
524 _mem_save_aces_0 = NDR_PULL_GET_MEM_CTX(ndr);
525 NDR_PULL_SET_MEM_CTX(ndr, r->aces, 0);
526 for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
527 NDR_CHECK(ndr_pull_security_ace(ndr, NDR_BUFFERS, &r->aces[cntr_aces_0]));
529 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_aces_0, 0);
531 return NDR_ERR_SUCCESS;
534 _PUBLIC_ void ndr_print_security_acl(struct ndr_print *ndr, const char *name, const struct security_acl *r)
536 uint32_t cntr_aces_0;
537 ndr_print_struct(ndr, name, "security_acl");
538 ndr->depth++;
539 ndr_print_security_acl_revision(ndr, "revision", r->revision);
540 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_security_acl(r, ndr->iconv_convenience, ndr->flags):r->size);
541 ndr_print_uint32(ndr, "num_aces", r->num_aces);
542 ndr->print(ndr, "%s: ARRAY(%d)", "aces", (int)r->num_aces);
543 ndr->depth++;
544 for (cntr_aces_0=0;cntr_aces_0<r->num_aces;cntr_aces_0++) {
545 char *idx_0=NULL;
546 if (asprintf(&idx_0, "[%d]", cntr_aces_0) != -1) {
547 ndr_print_security_ace(ndr, "aces", &r->aces[cntr_aces_0]);
548 free(idx_0);
551 ndr->depth--;
552 ndr->depth--;
555 static enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r)
557 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r));
558 return NDR_ERR_SUCCESS;
561 static enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r)
563 uint8_t v;
564 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v));
565 *r = v;
566 return NDR_ERR_SUCCESS;
569 _PUBLIC_ void ndr_print_security_descriptor_revision(struct ndr_print *ndr, const char *name, enum security_descriptor_revision r)
571 const char *val = NULL;
573 switch (r) {
574 case SECURITY_DESCRIPTOR_REVISION_1: val = "SECURITY_DESCRIPTOR_REVISION_1"; break;
576 ndr_print_enum(ndr, name, "ENUM", val, r);
579 static enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r)
581 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
582 return NDR_ERR_SUCCESS;
585 static enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
587 uint16_t v;
588 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
589 *r = v;
590 return NDR_ERR_SUCCESS;
593 _PUBLIC_ void ndr_print_security_descriptor_type(struct ndr_print *ndr, const char *name, uint16_t r)
595 ndr_print_uint16(ndr, name, r);
596 ndr->depth++;
597 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_OWNER_DEFAULTED", SEC_DESC_OWNER_DEFAULTED, r);
598 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_GROUP_DEFAULTED", SEC_DESC_GROUP_DEFAULTED, r);
599 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_PRESENT", SEC_DESC_DACL_PRESENT, r);
600 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_DEFAULTED", SEC_DESC_DACL_DEFAULTED, r);
601 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SACL_PRESENT", SEC_DESC_SACL_PRESENT, r);
602 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SACL_DEFAULTED", SEC_DESC_SACL_DEFAULTED, r);
603 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_TRUSTED", SEC_DESC_DACL_TRUSTED, r);
604 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SERVER_SECURITY", SEC_DESC_SERVER_SECURITY, r);
605 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_AUTO_INHERIT_REQ", SEC_DESC_DACL_AUTO_INHERIT_REQ, r);
606 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SACL_AUTO_INHERIT_REQ", SEC_DESC_SACL_AUTO_INHERIT_REQ, r);
607 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_AUTO_INHERITED", SEC_DESC_DACL_AUTO_INHERITED, r);
608 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SACL_AUTO_INHERITED", SEC_DESC_SACL_AUTO_INHERITED, r);
609 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_DACL_PROTECTED", SEC_DESC_DACL_PROTECTED, r);
610 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SACL_PROTECTED", SEC_DESC_SACL_PROTECTED, r);
611 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_RM_CONTROL_VALID", SEC_DESC_RM_CONTROL_VALID, r);
612 ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "SEC_DESC_SELF_RELATIVE", SEC_DESC_SELF_RELATIVE, r);
613 ndr->depth--;
616 _PUBLIC_ enum ndr_err_code ndr_push_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r)
619 uint32_t _flags_save_STRUCT = ndr->flags;
620 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
621 if (ndr_flags & NDR_SCALARS) {
622 NDR_CHECK(ndr_push_align(ndr, 5));
623 NDR_CHECK(ndr_push_security_descriptor_revision(ndr, NDR_SCALARS, r->revision));
624 NDR_CHECK(ndr_push_security_descriptor_type(ndr, NDR_SCALARS, r->type));
625 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->owner_sid));
626 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->group_sid));
627 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->sacl));
628 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dacl));
629 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
631 if (ndr_flags & NDR_BUFFERS) {
632 if (r->owner_sid) {
633 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->owner_sid));
634 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->owner_sid));
636 if (r->group_sid) {
637 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->group_sid));
638 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->group_sid));
640 if (r->sacl) {
641 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->sacl));
642 NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->sacl));
644 if (r->dacl) {
645 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dacl));
646 NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->dacl));
649 ndr->flags = _flags_save_STRUCT;
651 return NDR_ERR_SUCCESS;
654 _PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r)
656 uint32_t _ptr_owner_sid;
657 TALLOC_CTX *_mem_save_owner_sid_0;
658 uint32_t _ptr_group_sid;
659 TALLOC_CTX *_mem_save_group_sid_0;
660 uint32_t _ptr_sacl;
661 TALLOC_CTX *_mem_save_sacl_0;
662 uint32_t _ptr_dacl;
663 TALLOC_CTX *_mem_save_dacl_0;
665 uint32_t _flags_save_STRUCT = ndr->flags;
666 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
667 if (ndr_flags & NDR_SCALARS) {
668 NDR_CHECK(ndr_pull_align(ndr, 5));
669 NDR_CHECK(ndr_pull_security_descriptor_revision(ndr, NDR_SCALARS, &r->revision));
670 NDR_CHECK(ndr_pull_security_descriptor_type(ndr, NDR_SCALARS, &r->type));
671 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_owner_sid));
672 if (_ptr_owner_sid) {
673 NDR_PULL_ALLOC(ndr, r->owner_sid);
674 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->owner_sid, _ptr_owner_sid));
675 } else {
676 r->owner_sid = NULL;
678 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_sid));
679 if (_ptr_group_sid) {
680 NDR_PULL_ALLOC(ndr, r->group_sid);
681 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->group_sid, _ptr_group_sid));
682 } else {
683 r->group_sid = NULL;
685 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sacl));
686 if (_ptr_sacl) {
687 NDR_PULL_ALLOC(ndr, r->sacl);
688 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->sacl, _ptr_sacl));
689 } else {
690 r->sacl = NULL;
692 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dacl));
693 if (_ptr_dacl) {
694 NDR_PULL_ALLOC(ndr, r->dacl);
695 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dacl, _ptr_dacl));
696 } else {
697 r->dacl = NULL;
699 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
701 if (ndr_flags & NDR_BUFFERS) {
702 if (r->owner_sid) {
703 uint32_t _relative_save_offset;
704 _relative_save_offset = ndr->offset;
705 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->owner_sid));
706 _mem_save_owner_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
707 NDR_PULL_SET_MEM_CTX(ndr, r->owner_sid, 0);
708 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->owner_sid));
709 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_owner_sid_0, 0);
710 ndr->offset = _relative_save_offset;
712 if (r->group_sid) {
713 uint32_t _relative_save_offset;
714 _relative_save_offset = ndr->offset;
715 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->group_sid));
716 _mem_save_group_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
717 NDR_PULL_SET_MEM_CTX(ndr, r->group_sid, 0);
718 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->group_sid));
719 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_sid_0, 0);
720 ndr->offset = _relative_save_offset;
722 if (r->sacl) {
723 uint32_t _relative_save_offset;
724 _relative_save_offset = ndr->offset;
725 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->sacl));
726 _mem_save_sacl_0 = NDR_PULL_GET_MEM_CTX(ndr);
727 NDR_PULL_SET_MEM_CTX(ndr, r->sacl, 0);
728 NDR_CHECK(ndr_pull_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->sacl));
729 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sacl_0, 0);
730 ndr->offset = _relative_save_offset;
732 if (r->dacl) {
733 uint32_t _relative_save_offset;
734 _relative_save_offset = ndr->offset;
735 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dacl));
736 _mem_save_dacl_0 = NDR_PULL_GET_MEM_CTX(ndr);
737 NDR_PULL_SET_MEM_CTX(ndr, r->dacl, 0);
738 NDR_CHECK(ndr_pull_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->dacl));
739 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dacl_0, 0);
740 ndr->offset = _relative_save_offset;
743 ndr->flags = _flags_save_STRUCT;
745 return NDR_ERR_SUCCESS;
748 _PUBLIC_ void ndr_print_security_descriptor(struct ndr_print *ndr, const char *name, const struct security_descriptor *r)
750 ndr_print_struct(ndr, name, "security_descriptor");
752 uint32_t _flags_save_STRUCT = ndr->flags;
753 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
754 ndr->depth++;
755 ndr_print_security_descriptor_revision(ndr, "revision", r->revision);
756 ndr_print_security_descriptor_type(ndr, "type", r->type);
757 ndr_print_ptr(ndr, "owner_sid", r->owner_sid);
758 ndr->depth++;
759 if (r->owner_sid) {
760 ndr_print_dom_sid(ndr, "owner_sid", r->owner_sid);
762 ndr->depth--;
763 ndr_print_ptr(ndr, "group_sid", r->group_sid);
764 ndr->depth++;
765 if (r->group_sid) {
766 ndr_print_dom_sid(ndr, "group_sid", r->group_sid);
768 ndr->depth--;
769 ndr_print_ptr(ndr, "sacl", r->sacl);
770 ndr->depth++;
771 if (r->sacl) {
772 ndr_print_security_acl(ndr, "sacl", r->sacl);
774 ndr->depth--;
775 ndr_print_ptr(ndr, "dacl", r->dacl);
776 ndr->depth++;
777 if (r->dacl) {
778 ndr_print_security_acl(ndr, "dacl", r->dacl);
780 ndr->depth--;
781 ndr->depth--;
782 ndr->flags = _flags_save_STRUCT;
786 _PUBLIC_ enum ndr_err_code ndr_push_sec_desc_buf(struct ndr_push *ndr, int ndr_flags, const struct sec_desc_buf *r)
788 if (ndr_flags & NDR_SCALARS) {
789 NDR_CHECK(ndr_push_align(ndr, 5));
790 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_security_descriptor(r->sd, ndr->iconv_convenience, ndr->flags)));
791 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
792 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
794 if (ndr_flags & NDR_BUFFERS) {
795 if (r->sd) {
797 struct ndr_push *_ndr_sd;
798 NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sd, 4, -1));
799 NDR_CHECK(ndr_push_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
800 NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sd, 4, -1));
804 return NDR_ERR_SUCCESS;
807 _PUBLIC_ enum ndr_err_code ndr_pull_sec_desc_buf(struct ndr_pull *ndr, int ndr_flags, struct sec_desc_buf *r)
809 uint32_t _ptr_sd;
810 TALLOC_CTX *_mem_save_sd_0;
811 if (ndr_flags & NDR_SCALARS) {
812 NDR_CHECK(ndr_pull_align(ndr, 5));
813 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sd_size));
814 if (r->sd_size > 0x40000) {
815 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
817 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
818 if (_ptr_sd) {
819 NDR_PULL_ALLOC(ndr, r->sd);
820 } else {
821 r->sd = NULL;
823 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
825 if (ndr_flags & NDR_BUFFERS) {
826 if (r->sd) {
827 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
828 NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
830 struct ndr_pull *_ndr_sd;
831 NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sd, 4, -1));
832 NDR_CHECK(ndr_pull_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
833 NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sd, 4, -1));
835 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
838 return NDR_ERR_SUCCESS;
841 _PUBLIC_ void ndr_print_sec_desc_buf(struct ndr_print *ndr, const char *name, const struct sec_desc_buf *r)
843 ndr_print_struct(ndr, name, "sec_desc_buf");
844 ndr->depth++;
845 ndr_print_uint32(ndr, "sd_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_security_descriptor(r->sd, ndr->iconv_convenience, ndr->flags):r->sd_size);
846 ndr_print_ptr(ndr, "sd", r->sd);
847 ndr->depth++;
848 if (r->sd) {
849 ndr_print_security_descriptor(ndr, "sd", r->sd);
851 ndr->depth--;
852 ndr->depth--;
855 _PUBLIC_ enum ndr_err_code ndr_push_security_token(struct ndr_push *ndr, int ndr_flags, const struct security_token *r)
857 uint32_t cntr_sids_0;
858 if (ndr_flags & NDR_SCALARS) {
859 NDR_CHECK(ndr_push_align(ndr, 5));
860 NDR_CHECK(ndr_push_unique_ptr(ndr, r->user_sid));
861 NDR_CHECK(ndr_push_unique_ptr(ndr, r->group_sid));
862 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids));
863 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_sids));
864 for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
865 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids[cntr_sids_0]));
867 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->privilege_mask));
868 NDR_CHECK(ndr_push_unique_ptr(ndr, r->default_dacl));
869 NDR_CHECK(ndr_push_trailer_align(ndr, 5));
871 if (ndr_flags & NDR_BUFFERS) {
872 if (r->user_sid) {
873 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->user_sid));
875 if (r->group_sid) {
876 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->group_sid));
878 for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
879 if (r->sids[cntr_sids_0]) {
880 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, r->sids[cntr_sids_0]));
883 if (r->default_dacl) {
884 NDR_CHECK(ndr_push_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->default_dacl));
887 return NDR_ERR_SUCCESS;
890 _PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr_flags, struct security_token *r)
892 uint32_t _ptr_user_sid;
893 TALLOC_CTX *_mem_save_user_sid_0;
894 uint32_t _ptr_group_sid;
895 TALLOC_CTX *_mem_save_group_sid_0;
896 uint32_t _ptr_sids;
897 uint32_t cntr_sids_0;
898 TALLOC_CTX *_mem_save_sids_0;
899 TALLOC_CTX *_mem_save_sids_1;
900 uint32_t _ptr_default_dacl;
901 TALLOC_CTX *_mem_save_default_dacl_0;
902 if (ndr_flags & NDR_SCALARS) {
903 NDR_CHECK(ndr_pull_align(ndr, 5));
904 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_sid));
905 if (_ptr_user_sid) {
906 NDR_PULL_ALLOC(ndr, r->user_sid);
907 } else {
908 r->user_sid = NULL;
910 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_sid));
911 if (_ptr_group_sid) {
912 NDR_PULL_ALLOC(ndr, r->group_sid);
913 } else {
914 r->group_sid = NULL;
916 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids));
917 NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
918 NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
919 _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
920 NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
921 for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
922 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
923 if (_ptr_sids) {
924 NDR_PULL_ALLOC(ndr, r->sids[cntr_sids_0]);
925 } else {
926 r->sids[cntr_sids_0] = NULL;
929 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
930 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->privilege_mask));
931 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_default_dacl));
932 if (_ptr_default_dacl) {
933 NDR_PULL_ALLOC(ndr, r->default_dacl);
934 } else {
935 r->default_dacl = NULL;
937 if (r->sids) {
938 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids));
940 NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
942 if (ndr_flags & NDR_BUFFERS) {
943 if (r->user_sid) {
944 _mem_save_user_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
945 NDR_PULL_SET_MEM_CTX(ndr, r->user_sid, 0);
946 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->user_sid));
947 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_sid_0, 0);
949 if (r->group_sid) {
950 _mem_save_group_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
951 NDR_PULL_SET_MEM_CTX(ndr, r->group_sid, 0);
952 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->group_sid));
953 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_sid_0, 0);
955 _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
956 NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
957 for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
958 if (r->sids[cntr_sids_0]) {
959 _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
960 NDR_PULL_SET_MEM_CTX(ndr, r->sids[cntr_sids_0], 0);
961 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->sids[cntr_sids_0]));
962 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
965 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
966 if (r->default_dacl) {
967 _mem_save_default_dacl_0 = NDR_PULL_GET_MEM_CTX(ndr);
968 NDR_PULL_SET_MEM_CTX(ndr, r->default_dacl, 0);
969 NDR_CHECK(ndr_pull_security_acl(ndr, NDR_SCALARS|NDR_BUFFERS, r->default_dacl));
970 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_default_dacl_0, 0);
973 return NDR_ERR_SUCCESS;
976 _PUBLIC_ void ndr_print_security_token(struct ndr_print *ndr, const char *name, const struct security_token *r)
978 uint32_t cntr_sids_0;
979 ndr_print_struct(ndr, name, "security_token");
980 ndr->depth++;
981 ndr_print_ptr(ndr, "user_sid", r->user_sid);
982 ndr->depth++;
983 if (r->user_sid) {
984 ndr_print_dom_sid(ndr, "user_sid", r->user_sid);
986 ndr->depth--;
987 ndr_print_ptr(ndr, "group_sid", r->group_sid);
988 ndr->depth++;
989 if (r->group_sid) {
990 ndr_print_dom_sid(ndr, "group_sid", r->group_sid);
992 ndr->depth--;
993 ndr_print_uint32(ndr, "num_sids", r->num_sids);
994 ndr->print(ndr, "%s: ARRAY(%d)", "sids", (int)r->num_sids);
995 ndr->depth++;
996 for (cntr_sids_0=0;cntr_sids_0<r->num_sids;cntr_sids_0++) {
997 char *idx_0=NULL;
998 if (asprintf(&idx_0, "[%d]", cntr_sids_0) != -1) {
999 ndr_print_ptr(ndr, "sids", r->sids[cntr_sids_0]);
1000 ndr->depth++;
1001 if (r->sids[cntr_sids_0]) {
1002 ndr_print_dom_sid(ndr, "sids", r->sids[cntr_sids_0]);
1004 ndr->depth--;
1005 free(idx_0);
1008 ndr->depth--;
1009 ndr_print_udlong(ndr, "privilege_mask", r->privilege_mask);
1010 ndr_print_ptr(ndr, "default_dacl", r->default_dacl);
1011 ndr->depth++;
1012 if (r->default_dacl) {
1013 ndr_print_security_acl(ndr, "default_dacl", r->default_dacl);
1015 ndr->depth--;
1016 ndr->depth--;
1019 _PUBLIC_ enum ndr_err_code ndr_push_security_secinfo(struct ndr_push *ndr, int ndr_flags, uint32_t r)
1021 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1022 return NDR_ERR_SUCCESS;
1025 _PUBLIC_ enum ndr_err_code ndr_pull_security_secinfo(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
1027 uint32_t v;
1028 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1029 *r = v;
1030 return NDR_ERR_SUCCESS;
1033 _PUBLIC_ void ndr_print_security_secinfo(struct ndr_print *ndr, const char *name, uint32_t r)
1035 ndr_print_uint32(ndr, name, r);
1036 ndr->depth++;
1037 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_OWNER", SECINFO_OWNER, r);
1038 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_GROUP", SECINFO_GROUP, r);
1039 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_DACL", SECINFO_DACL, r);
1040 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_SACL", SECINFO_SACL, r);
1041 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_UNPROTECTED_SACL", SECINFO_UNPROTECTED_SACL, r);
1042 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_UNPROTECTED_DACL", SECINFO_UNPROTECTED_DACL, r);
1043 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_PROTECTED_SACL", SECINFO_PROTECTED_SACL, r);
1044 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SECINFO_PROTECTED_DACL", SECINFO_PROTECTED_DACL, r);
1045 ndr->depth--;
1048 _PUBLIC_ enum ndr_err_code ndr_push_kerb_EncTypes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
1050 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1051 return NDR_ERR_SUCCESS;
1054 _PUBLIC_ enum ndr_err_code ndr_pull_kerb_EncTypes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
1056 uint32_t v;
1057 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1058 *r = v;
1059 return NDR_ERR_SUCCESS;
1062 _PUBLIC_ void ndr_print_kerb_EncTypes(struct ndr_print *ndr, const char *name, uint32_t r)
1064 ndr_print_uint32(ndr, name, r);
1065 ndr->depth++;
1066 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KERB_ENCTYPE_DES_CBC_CRC", KERB_ENCTYPE_DES_CBC_CRC, r);
1067 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KERB_ENCTYPE_DES_CBC_MD5", KERB_ENCTYPE_DES_CBC_MD5, r);
1068 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KERB_ENCTYPE_RC4_HMAC_MD5", KERB_ENCTYPE_RC4_HMAC_MD5, r);
1069 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96", KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96, r);
1070 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96", KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96, r);
1071 ndr->depth--;
1074 _PUBLIC_ enum ndr_err_code ndr_push_security_autoinherit(struct ndr_push *ndr, int ndr_flags, uint32_t r)
1076 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1077 return NDR_ERR_SUCCESS;
1080 _PUBLIC_ enum ndr_err_code ndr_pull_security_autoinherit(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
1082 uint32_t v;
1083 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1084 *r = v;
1085 return NDR_ERR_SUCCESS;
1088 _PUBLIC_ void ndr_print_security_autoinherit(struct ndr_print *ndr, const char *name, uint32_t r)
1090 ndr_print_uint32(ndr, name, r);
1091 ndr->depth++;
1092 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_DACL_AUTO_INHERIT", SEC_DACL_AUTO_INHERIT, r);
1093 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_SACL_AUTO_INHERIT", SEC_SACL_AUTO_INHERIT, r);
1094 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_DEFAULT_DESCRIPTOR", SEC_DEFAULT_DESCRIPTOR, r);
1095 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_OWNER_FROM_PARENT", SEC_OWNER_FROM_PARENT, r);
1096 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SEC_GROUP_FROM_PARENT", SEC_GROUP_FROM_PARENT, r);
1097 ndr->depth--;