From c480428e3767cac53dcafa29b03ce31e0da1efc9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?=
Date: Thu, 7 Aug 2025 20:39:24 +0100 Subject: [PATCH] basenc: fix stripping of '=' chars in some encodings * src/basenc.c (do_decode): With -i ensure we strip '=' chars if there is no padding for the chosen encoding. * tests/basenc/basenc.pl: Add a test case. * NEWS: Mention the bug fix. --- NEWS | 4 ++++ src/basenc.c | 3 ++- tests/basenc/basenc.pl | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 473c7a798d..f97c7e4a19 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,10 @@ GNU coreutils NEWS -*- outline -*- ** Bug fixes + 'basenc -d -i' will now strip '=' characters from the input + in encodings where padding characters are not valid. + [bug introduced with the basenc program in coreutils-8.31] + cksum was not compilable by Apple LLVM 10.0.0 x86-64, which lacks support for checking for the VPCLMULQDQ instruction. [bug introduced in coreutils-9.6] diff --git a/src/basenc.c b/src/basenc.c index c445e6f41a..4993c00253 100644 --- a/src/basenc.c +++ b/src/basenc.c @@ -1159,7 +1159,8 @@ do_decode (FILE *in, char const *infile, FILE *out, bool ignore_garbage) { for (idx_t i = 0; n > 0 && i < n;) { - if (isubase (inbuf[sum + i]) || inbuf[sum + i] == '=') + if (isubase (inbuf[sum + i]) + || (REQUIRED_PADDING (1) && inbuf[sum + i] == '=')) i++; else memmove (inbuf + sum + i, inbuf + sum + i + 1, --n - i); diff --git a/tests/basenc/basenc.pl b/tests/basenc/basenc.pl index c598d29e5b..94f6c2b326 100755 --- a/tests/basenc/basenc.pl +++ b/tests/basenc/basenc.pl @@ -168,6 +168,7 @@ my @Tests = ['b2m_2', '--base2m -d', {IN=>'11000001'}, {OUT=>"\xC1"}], ['b2m_3', '--base2m -d', {IN=>"110\n00001"}, {OUT=>"\xC1"}], ['b2m_4', '--base2m -di', {IN=>"110x00001"}, {OUT=>"\xC1"}], + ['b2m_4p', '--base2m -di', {IN=>"=11000001="}, {OUT=>"\xC1"}], ['b2m_5', '--base2m -d', {IN=>"110x00001"}, {EXIT=>1}, {ERR=>"$prog: invalid input\n"}], ['b2m_6', '--base2m -d', {IN=>"11000001x"}, {OUT=>"\xC1"}, {EXIT=>1}, -- 2.47.3