diff options
| author | Bruno Haible <bruno@clisp.org> | 2025-08-12 02:25:41 +0200 |
|---|---|---|
| committer | Paul Eggert <eggert@cs.ucla.edu> | 2025-08-11 18:07:20 -0700 |
| commit | f4d339c934a4e737e98cb0e29cc266b790ed1f77 (patch) | |
| tree | 26bf380baa6750dbe54f258caf12e5fd98d25255 | |
| parent | realpath: support the -E option required by POSIX (diff) | |
| download | coreutils-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.c | 8 |
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; |
