s4-ndr_basic.c: Fix ndr_*_hyper() when [bigendian] data is processed
authorKamen Mazdrashki <kamenim@samba.org>
Fri, 20 Aug 2010 18:58:22 +0000 (21:58 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Fri, 20 Aug 2010 21:33:52 +0000 (00:33 +0300)
librpc/ndr/ndr_basic.c

index 0becf38f7ba14a3bacb70131b9a94e1efe539c71..58d4e46e72dd1efdc328b7ef4c4c2f0a863762b9 100644 (file)
@@ -252,6 +252,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_dlong(struct ndr_pull *ndr, int ndr_flags, i
 _PUBLIC_ enum ndr_err_code ndr_pull_hyper(struct ndr_pull *ndr, int ndr_flags, uint64_t *v)
 {
        NDR_PULL_ALIGN(ndr, 8);
+       if (NDR_BE(ndr)) {
+               return ndr_pull_udlongr(ndr, ndr_flags, v);
+       }
        return ndr_pull_udlong(ndr, ndr_flags, v);
 }
 
@@ -549,6 +552,9 @@ _PUBLIC_ enum ndr_err_code ndr_push_dlong(struct ndr_push *ndr, int ndr_flags, i
 _PUBLIC_ enum ndr_err_code ndr_push_hyper(struct ndr_push *ndr, int ndr_flags, uint64_t v)
 {
        NDR_PUSH_ALIGN(ndr, 8);
+       if (NDR_BE(ndr)) {
+               return ndr_push_udlongr(ndr, NDR_SCALARS, v);
+       }
        return ndr_push_udlong(ndr, NDR_SCALARS, v);
 }