spoolss: fix spoolss helper for out ref count pointer.
authorGünther Deschner <gd@samba.org>
Mon, 16 Feb 2009 15:40:54 +0000 (16:40 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 17 Feb 2009 15:15:52 +0000 (16:15 +0100)
Guenther

librpc/ndr/ndr_spoolss_buf.c

index 0ab017e0842de11993bca9d855c0a73011ded095..e74b0a9ee1fa65b7287d3c5c77c4858931d32cdf 100644 (file)
@@ -64,7 +64,7 @@
                if (r->out.info) {\
                        struct __##fn __r;\
                        __r.in.level    = r->in.level;\
-                       __r.in.count    = r->out.count;\
+                       __r.in.count    = *r->out.count;\
                        __r.out.info    = r->out.info;\
                        NDR_CHECK(ndr_push___##fn(_ndr_info, flags, &__r)); \
                }\
        r->in.buffer    = _r.in.buffer;\
        r->in.offered   = _r.in.offered;\
        r->out.needed   = _r.out.needed;\
+       r->out.count    = _r.out.count;\
        if (!r->in.buffer && r->in.offered != 0) {\
                return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,\
                        "SPOOLSS Buffer: r->in.offered[%u] but there's no buffer",\
        _r.in.buffer    = r->in.buffer;\
        _r.in.offered   = r->in.offered;\
        _r.out.needed   = r->out.needed;\
+       _r.out.count    = r->out.count;\
        NDR_CHECK(ndr_pull__##fn(ndr, flags, &_r));\
        r->out.info     = NULL;\
        r->out.needed   = _r.out.needed;\
                if (*r->out.needed <= _ndr_info->data_size) {\
                        struct __##fn __r;\
                        __r.in.level    = r->in.level;\
-                       __r.in.count    = r->out.count;\
+                       __r.in.count    = *r->out.count;\
                        __r.out.info    = NULL;\
                        NDR_CHECK(ndr_pull___##fn(_ndr_info, flags, &__r));\
                        r->out.info     = __r.out.info;\