rerun 'make samba3-idl'
[samba.git] / librpc / gen_ndr / ndr_security.c
index 64c134dcb848281551e3ef38db3a5c7783c81972..824f24b70fbf3499b5d691593023cbdb4d221eb8 100644 (file)
@@ -491,6 +491,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_security_acl(struct ndr_push *ndr, int ndr_f
 
 _PUBLIC_ enum ndr_err_code ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct security_acl *r)
 {
+       uint32_t size_aces_0 = 0;
        uint32_t cntr_aces_0;
        TALLOC_CTX *_mem_save_aces_0;
        if (ndr_flags & NDR_SCALARS) {
@@ -498,21 +499,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_f
                NDR_CHECK(ndr_pull_security_acl_revision(ndr, NDR_SCALARS, &r->revision));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_aces));
-               if (r->num_aces < 0 || r->num_aces > 1000) {
+               if (r->num_aces > 1000) {
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
                }
-               NDR_PULL_ALLOC_N(ndr, r->aces, r->num_aces);
+               size_aces_0 = r->num_aces;
+               NDR_PULL_ALLOC_N(ndr, r->aces, size_aces_0);
                _mem_save_aces_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->aces, 0);
-               for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
+               for (cntr_aces_0 = 0; cntr_aces_0 < size_aces_0; cntr_aces_0++) {
                        NDR_CHECK(ndr_pull_security_ace(ndr, NDR_SCALARS, &r->aces[cntr_aces_0]));
                }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_aces_0, 0);
        }
        if (ndr_flags & NDR_BUFFERS) {
+               size_aces_0 = r->num_aces;
                _mem_save_aces_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->aces, 0);
-               for (cntr_aces_0 = 0; cntr_aces_0 < r->num_aces; cntr_aces_0++) {
+               for (cntr_aces_0 = 0; cntr_aces_0 < size_aces_0; cntr_aces_0++) {
                        NDR_CHECK(ndr_pull_security_ace(ndr, NDR_BUFFERS, &r->aces[cntr_aces_0]));
                }
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_aces_0, 0);
@@ -541,13 +544,13 @@ _PUBLIC_ void ndr_print_security_acl(struct ndr_print *ndr, const char *name, co
        ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r)
+_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_revision(struct ndr_push *ndr, int ndr_flags, enum security_descriptor_revision r)
 {
        NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r));
        return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int ndr_flags, enum security_descriptor_revision *r)
 {
        uint8_t v;
        NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
@@ -565,13 +568,13 @@ _PUBLIC_ void ndr_print_security_descriptor_revision(struct ndr_print *ndr, cons
        ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
-static enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r)
+_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_type(struct ndr_push *ndr, int ndr_flags, uint16_t r)
 {
        NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
        return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_type(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
 {
        uint16_t v;
        NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
@@ -618,20 +621,24 @@ _PUBLIC_ enum ndr_err_code ndr_push_security_descriptor(struct ndr_push *ndr, in
                }
                if (ndr_flags & NDR_BUFFERS) {
                        if (r->owner_sid) {
-                               NDR_CHECK(ndr_push_relative_ptr2(ndr, 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(ndr, 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));
                        }
                        if (r->sacl) {
-                               NDR_CHECK(ndr_push_relative_ptr2(ndr, 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(ndr, 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));
                        }
                }
                ndr->flags = _flags_save_STRUCT;
@@ -797,7 +804,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_sec_desc_buf(struct ndr_pull *ndr, int ndr_f
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 4));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sd_size));
-               if (r->sd_size < 0 || r->sd_size > 0x40000) {
+               if (r->sd_size > 0x40000) {
                        return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
                }
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
@@ -874,6 +881,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr
        uint32_t _ptr_group_sid;
        TALLOC_CTX *_mem_save_group_sid_0;
        uint32_t _ptr_sids;
+       uint32_t size_sids_0 = 0;
        uint32_t cntr_sids_0;
        TALLOC_CTX *_mem_save_sids_0;
        TALLOC_CTX *_mem_save_sids_1;
@@ -893,10 +901,11 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr
                }
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids));
                NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
-               NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
+               size_sids_0 = ndr_get_array_size(ndr, &r->sids);
+               NDR_PULL_ALLOC_N(ndr, r->sids, size_sids_0);
                _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
-               for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
+               for (cntr_sids_0 = 0; cntr_sids_0 < size_sids_0; cntr_sids_0++) {
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
                        if (_ptr_sids) {
                                NDR_PULL_ALLOC(ndr, r->sids[cntr_sids_0]);
@@ -923,9 +932,10 @@ _PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr
                        NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, r->group_sid));
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_sid_0, 0);
                }
+               size_sids_0 = ndr_get_array_size(ndr, &r->sids);
                _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
                NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
-               for (cntr_sids_0 = 0; cntr_sids_0 < r->num_sids; cntr_sids_0++) {
+               for (cntr_sids_0 = 0; cntr_sids_0 < size_sids_0; cntr_sids_0++) {
                        if (r->sids[cntr_sids_0]) {
                                _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
                                NDR_PULL_SET_MEM_CTX(ndr, r->sids[cntr_sids_0], 0);