From 2aec9a0b73ea27e2f1eb02a26a6e8dcc9423353c Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 2 Sep 2025 16:34:02 +0200 Subject: [PATCH] dix: rpcbuf: add x_rpcbuf_write_CARD64() and x_rpcbuf_write_CARD64s() Add functions for writing (and byte-swapping) CARD64 values. Signed-off-by: Enrico Weigelt, metux IT consult --- dix/rpcbuf.c | 33 +++++++++++++++++++++++++++++++++ dix/rpcbuf_priv.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/dix/rpcbuf.c b/dix/rpcbuf.c index 9ba594d338..aab6bfc7c7 100644 --- a/dix/rpcbuf.c +++ b/dix/rpcbuf.c @@ -145,6 +145,20 @@ Bool x_rpcbuf_write_CARD32(x_rpcbuf_t *rpcbuf, CARD32 value) return TRUE; } +Bool x_rpcbuf_write_CARD64(x_rpcbuf_t *rpcbuf, CARD64 value) +{ + CARD64 *reserved = x_rpcbuf_reserve(rpcbuf, sizeof(value)); + if (!reserved) + return FALSE; + + *reserved = value; + + if (rpcbuf->swapped) + swapll(reserved); + + return TRUE; +} + Bool x_rpcbuf_write_CARD8s(x_rpcbuf_t *rpcbuf, const CARD8 *values, size_t count) { @@ -196,6 +210,25 @@ Bool x_rpcbuf_write_CARD32s(x_rpcbuf_t *rpcbuf, const CARD32 *values, return TRUE; } +Bool x_rpcbuf_write_CARD64s(x_rpcbuf_t *rpcbuf, const CARD64 *values, + size_t count) +{ + if ((!values) || (!count)) + return TRUE; + + CARD64 *reserved = x_rpcbuf_reserve(rpcbuf, sizeof(CARD64) * count); + if (!reserved) + return FALSE; + + memcpy(reserved, values, sizeof(CARD64) * count); + + if (rpcbuf->swapped) + for (size_t x=0; x