aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2025-08-12 02:25:41 +0200
committerPaul Eggert <eggert@cs.ucla.edu>2025-08-11 18:07:20 -0700
commitf4d339c934a4e737e98cb0e29cc266b790ed1f77 (patch)
tree26bf380baa6750dbe54f258caf12e5fd98d25255
parentrealpath: support the -E option required by POSIX (diff)
downloadcoreutils-f4d339c934a4e737e98cb0e29cc266b790ed1f77.tar.gz
coreutils-f4d339c934a4e737e98cb0e29cc266b790ed1f77.zip
basenc: Don't trigger undefined behaviour in mini-gmp
* src/basenc.c (base58_encode): Avoid calling mpz_import on an empty limb sequence.
-rw-r--r--src/basenc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/basenc.c b/src/basenc.c
index dbe3b388f..84789e2de 100644
--- a/src/basenc.c
+++ b/src/basenc.c
@@ -1175,10 +1175,12 @@ base58_encode (char const* data, size_t data_len,
/* Use GMP to convert from base 256 to base 58. */
mpz_t num;
mpz_init (num);
- mpz_import (num, data_len - zeros, 1, 1, 0, 0, data + zeros);
if (data_len - zeros)
- for (p = mpz_get_str (p, 58, num); *p; p++)
- *p = gmp_to_base58[to_uchar (*p)];
+ {
+ mpz_import (num, data_len - zeros, 1, 1, 0, 0, data + zeros);
+ for (p = mpz_get_str (p, 58, num); *p; p++)
+ *p = gmp_to_base58[to_uchar (*p)];
+ }
mpz_clear (num);
*outlen = p - out;