From: Vinit Agnihotri Date: Wed, 24 Sep 2025 06:19:15 +0000 (+0530) Subject: s3:lib:util_tdb: Add format identifier for 64-bit integer pack/unpack X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa160ebe8b41b0eb0956849fcd5208c45159f812;p=thirdparty%2Fsamba.git s3:lib:util_tdb: Add format identifier for 64-bit integer pack/unpack Signed-off-by: Vinit Agnihotri Reviewed-by: Volker Lendecke Reviewed-by: Anoop C S --- diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c index 3c7c1945f58..f6fa1905ce1 100644 --- a/source3/lib/util_tdb.c +++ b/source3/lib/util_tdb.c @@ -39,6 +39,7 @@ static size_t tdb_pack_va(uint8_t *buf, int bufsize, const char *fmt, va_list ap uint8_t bt; uint16_t w; uint32_t d; + int64_t D; int i; void *p; int len = 0; @@ -67,6 +68,12 @@ static size_t tdb_pack_va(uint8_t *buf, int bufsize, const char *fmt, va_list ap if (bufsize && bufsize >= len) SIVAL(buf, 0, d); break; + case 'D': /* signed 64-bit integer*/ + len = 8; + D = va_arg(ap, int64_t); + if (bufsize && bufsize >= len) + PUSH_LE_I64(buf, 0, D); + break; case 'p': /* pointer */ len = 4; p = va_arg(ap, void *); @@ -140,6 +147,7 @@ int tdb_unpack(const uint8_t *buf, int in_bufsize, const char *fmt, ...) uint8_t *bt; uint16_t *w; uint32_t *d; + int64_t *D; size_t bufsize = in_bufsize; size_t len; uint32_t *i; @@ -174,6 +182,13 @@ int tdb_unpack(const uint8_t *buf, int in_bufsize, const char *fmt, ...) goto no_space; *d = IVAL(buf, 0); break; + case 'D': /* Signed 64-bit integer */ + len = 8; + D = va_arg(ap, int64_t *); + if (bufsize < len) + goto no_space; + *D = PULL_LE_I64(buf, 0); + break; case 'p': /* pointer */ len = 4; p = va_arg(ap, void **);