From 2372f6a4035cefd5ac1852e95dc50de89cc73af6 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 21 Feb 2024 15:55:14 +0100 Subject: [PATCH] gpg: Fix gpg_mpi_write for the unused opaque case. * g10/build-packet.c (gpg_mpi_write): Take care of the fact that get_opaque already returns a bit-exact value. -- Fixes-commit: ab17f7b6c392782718f57eaea94fc18a0ff49389 Reported-by: Falko Strenzke --- g10/build-packet.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/g10/build-packet.c b/g10/build-packet.c index 67d4a6eef..19a13760a 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -306,7 +306,9 @@ gpg_mpi_write (iobuf_t out, gcry_mpi_t a, unsigned int *r_nwritten) p = gcry_mpi_get_opaque (a, &nbits); if (p) { - /* Strip leading zero bits. */ + /* First get nbits back to full bytes. */ + nbits = ((nbits + 7) / 8) * 8; + /* Then strip leading zero bits. */ for (; nbits >= 8 && !*p; p++, nbits -= 8) ; if (nbits >= 8 && !(*p & 0x80))