aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2025-08-07 20:39:24 +0100
committerPádraig Brady <P@draigBrady.com>2025-08-09 09:59:00 +0100
commitc480428e3767cac53dcafa29b03ce31e0da1efc9 (patch)
tree7839e06c92eaa626da9d8efafd4004405d812227
parentmaint: prefer attribute.h in .c files (diff)
downloadcoreutils-c480428e3767cac53dcafa29b03ce31e0da1efc9.tar.gz
coreutils-c480428e3767cac53dcafa29b03ce31e0da1efc9.zip
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.
-rw-r--r--NEWS4
-rw-r--r--src/basenc.c3
-rwxr-xr-xtests/basenc/basenc.pl1
3 files changed, 7 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 473c7a798..f97c7e4a1 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 c445e6f41..4993c0025 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 c598d29e5..94f6c2b32 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},