diff options
author | Andreas Schneider <asn@samba.org> | 2019-02-18 17:35:42 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2020-02-21 02:09:33 +0000 |
commit | 5268c83a4802d3f44850fe5b78b016682690540d (patch) | |
tree | abac4f2dc7a9d829802f69fa7e3439fe15df4cbd | |
parent | fc4064eae61ebc981d070284ceb9668642401943 (diff) | |
download | samba-5268c83a4802d3f44850fe5b78b016682690540d.tar.gz |
librpc:ndr: Use bytearray.h in ndr_basic.c
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r-- | librpc/ndr/ndr_basic.c | 85 |
1 files changed, 57 insertions, 28 deletions
diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c index 693d9c86e3a..82d2f3cfae6 100644 --- a/librpc/ndr/ndr_basic.c +++ b/librpc/ndr/ndr_basic.c @@ -25,14 +25,43 @@ #include "lib/util/util_net.h" #include "lib/util/debug.h" #include "lib/util/util.h" - -#define NDR_SVAL(ndr, ofs) (NDR_BE(ndr)?RSVAL(ndr->data,ofs):SVAL(ndr->data,ofs)) -#define NDR_IVAL(ndr, ofs) (NDR_BE(ndr)?RIVAL(ndr->data,ofs):IVAL(ndr->data,ofs)) -#define NDR_IVALS(ndr, ofs) (NDR_BE(ndr)?RIVALS(ndr->data,ofs):IVALS(ndr->data,ofs)) -#define NDR_SSVAL(ndr, ofs, v) do { if (NDR_BE(ndr)) { RSSVAL(ndr->data,ofs,v); } else SSVAL(ndr->data,ofs,v); } while (0) -#define NDR_SIVAL(ndr, ofs, v) do { if (NDR_BE(ndr)) { RSIVAL(ndr->data,ofs,v); } else SIVAL(ndr->data,ofs,v); } while (0) -#define NDR_SIVALS(ndr, ofs, v) do { if (NDR_BE(ndr)) { RSIVALS(ndr->data,ofs,v); } else SIVALS(ndr->data,ofs,v); } while (0) - +#include "lib/util/bytearray.h" + +#define NDR_PULL_U16(ndr, ofs) \ + (NDR_BE(ndr) ? PULL_BE_U16(ndr->data,ofs) : PULL_LE_U16(ndr->data,ofs)) + +#define NDR_PULL_U32(ndr, ofs) \ + (NDR_BE(ndr) ? PULL_BE_U32(ndr->data,ofs) : PULL_LE_U32(ndr->data,ofs)) + +#define NDR_PULL_I32(ndr, ofs) \ + (int32_t)(NDR_BE(ndr) ? PULL_BE_U32(ndr->data,ofs) : PULL_LE_U32(ndr->data,ofs)) + +#define NDR_PUSH_U16(ndr, ofs, v) \ + do { \ + if (NDR_BE(ndr)) { \ + PUSH_BE_U16(ndr->data, ofs, v); \ + } else { \ + PUSH_LE_U16(ndr->data, ofs, v); \ + } \ + } while (0) + +#define NDR_PUSH_U32(ndr, ofs, v) \ + do { \ + if (NDR_BE(ndr)) { \ + PUSH_BE_U32(ndr->data, ofs, v); \ + } else { \ + PUSH_LE_U32(ndr->data, ofs, v); \ + } \ + } while (0) + +#define NDR_PUSH_I32(ndr, ofs, v) \ + do { \ + if (NDR_BE(ndr)) { \ + PUSH_BE_U32(ndr->data, ofs, v); \ + } else { \ + PUSH_LE_U32(ndr->data, ofs, v); \ + } \ + } while (0) static void ndr_dump_data(struct ndr_print *ndr, const uint8_t *buf, int len); @@ -67,7 +96,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_int8(struct ndr_pull *ndr, int ndr_flags, in { NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_NEED_BYTES(ndr, 1); - *v = (int8_t)CVAL(ndr->data, ndr->offset); + *v = (int8_t)PULL_BE_U8(ndr->data, ndr->offset); ndr->offset += 1; return NDR_ERR_SUCCESS; } @@ -79,7 +108,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_uint8(struct ndr_pull *ndr, int ndr_flags, u { NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_NEED_BYTES(ndr, 1); - *v = CVAL(ndr->data, ndr->offset); + *v = PULL_BE_U8(ndr->data, ndr->offset); ndr->offset += 1; return NDR_ERR_SUCCESS; } @@ -92,7 +121,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_int16(struct ndr_pull *ndr, int ndr_flags, i NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 2); NDR_PULL_NEED_BYTES(ndr, 2); - *v = (uint16_t)NDR_SVAL(ndr, ndr->offset); + *v = (uint16_t)NDR_PULL_U16(ndr, ndr->offset); ndr->offset += 2; return NDR_ERR_SUCCESS; } @@ -105,7 +134,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_uint16(struct ndr_pull *ndr, int ndr_flags, NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 2); NDR_PULL_NEED_BYTES(ndr, 2); - *v = NDR_SVAL(ndr, ndr->offset); + *v = NDR_PULL_U16(ndr, ndr->offset); ndr->offset += 2; return NDR_ERR_SUCCESS; } @@ -137,7 +166,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_int32(struct ndr_pull *ndr, int ndr_flags, i NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 4); NDR_PULL_NEED_BYTES(ndr, 4); - *v = NDR_IVALS(ndr, ndr->offset); + *v = NDR_PULL_I32(ndr, ndr->offset); ndr->offset += 4; return NDR_ERR_SUCCESS; } @@ -150,7 +179,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_uint32(struct ndr_pull *ndr, int ndr_flags, NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 4); NDR_PULL_NEED_BYTES(ndr, 4); - *v = NDR_IVAL(ndr, ndr->offset); + *v = NDR_PULL_U32(ndr, ndr->offset); ndr->offset += 4; return NDR_ERR_SUCCESS; } @@ -237,8 +266,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_udlong(struct ndr_pull *ndr, int ndr_flags, NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 4); NDR_PULL_NEED_BYTES(ndr, 8); - *v = NDR_IVAL(ndr, ndr->offset); - *v |= (uint64_t)(NDR_IVAL(ndr, ndr->offset+4)) << 32; + *v = NDR_PULL_U32(ndr, ndr->offset); + *v |= (uint64_t)(NDR_PULL_U32(ndr, ndr->offset+4)) << 32; ndr->offset += 8; return NDR_ERR_SUCCESS; } @@ -251,8 +280,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_udlongr(struct ndr_pull *ndr, int ndr_flags, NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); NDR_PULL_ALIGN(ndr, 4); NDR_PULL_NEED_BYTES(ndr, 8); - *v = ((uint64_t)NDR_IVAL(ndr, ndr->offset)) << 32; - *v |= NDR_IVAL(ndr, ndr->offset+4); + *v = ((uint64_t)NDR_PULL_U32(ndr, ndr->offset)) << 32; + *v |= NDR_PULL_U32(ndr, ndr->offset+4); ndr->offset += 8; return NDR_ERR_SUCCESS; } @@ -475,7 +504,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_int8(struct ndr_push *ndr, int ndr_flags, in { NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_NEED_BYTES(ndr, 1); - SCVAL(ndr->data, ndr->offset, (uint8_t)v); + PUSH_BE_U8(ndr->data, ndr->offset, (uint8_t)v); ndr->offset += 1; return NDR_ERR_SUCCESS; } @@ -487,7 +516,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_uint8(struct ndr_push *ndr, int ndr_flags, u { NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_NEED_BYTES(ndr, 1); - SCVAL(ndr->data, ndr->offset, v); + PUSH_BE_U8(ndr->data, ndr->offset, v); ndr->offset += 1; return NDR_ERR_SUCCESS; } @@ -500,7 +529,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_int16(struct ndr_push *ndr, int ndr_flags, i NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 2); NDR_PUSH_NEED_BYTES(ndr, 2); - NDR_SSVAL(ndr, ndr->offset, (uint16_t)v); + NDR_PUSH_U16(ndr, ndr->offset, (uint16_t)v); ndr->offset += 2; return NDR_ERR_SUCCESS; } @@ -513,7 +542,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_uint16(struct ndr_push *ndr, int ndr_flags, NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 2); NDR_PUSH_NEED_BYTES(ndr, 2); - NDR_SSVAL(ndr, ndr->offset, v); + NDR_PUSH_U16(ndr, ndr->offset, v); ndr->offset += 2; return NDR_ERR_SUCCESS; } @@ -537,7 +566,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_int32(struct ndr_push *ndr, int ndr_flags, i NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 4); NDR_PUSH_NEED_BYTES(ndr, 4); - NDR_SIVALS(ndr, ndr->offset, v); + NDR_PUSH_I32(ndr, ndr->offset, v); ndr->offset += 4; return NDR_ERR_SUCCESS; } @@ -550,7 +579,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_uint32(struct ndr_push *ndr, int ndr_flags, NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 4); NDR_PUSH_NEED_BYTES(ndr, 4); - NDR_SIVAL(ndr, ndr->offset, v); + NDR_PUSH_U32(ndr, ndr->offset, v); ndr->offset += 4; return NDR_ERR_SUCCESS; } @@ -574,8 +603,8 @@ _PUBLIC_ enum ndr_err_code ndr_push_udlong(struct ndr_push *ndr, int ndr_flags, NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 4); NDR_PUSH_NEED_BYTES(ndr, 8); - NDR_SIVAL(ndr, ndr->offset, (v & 0xFFFFFFFF)); - NDR_SIVAL(ndr, ndr->offset+4, (v>>32)); + NDR_PUSH_U32(ndr, ndr->offset, (v & 0xFFFFFFFF)); + NDR_PUSH_U32(ndr, ndr->offset+4, (v>>32)); ndr->offset += 8; return NDR_ERR_SUCCESS; } @@ -588,8 +617,8 @@ _PUBLIC_ enum ndr_err_code ndr_push_udlongr(struct ndr_push *ndr, int ndr_flags, NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); NDR_PUSH_ALIGN(ndr, 4); NDR_PUSH_NEED_BYTES(ndr, 8); - NDR_SIVAL(ndr, ndr->offset, (v>>32)); - NDR_SIVAL(ndr, ndr->offset+4, (v & 0xFFFFFFFF)); + NDR_PUSH_U32(ndr, ndr->offset, (v>>32)); + NDR_PUSH_U32(ndr, ndr->offset+4, (v & 0xFFFFFFFF)); ndr->offset += 8; return NDR_ERR_SUCCESS; } |