From 69f8e90185e518d1722ed6a036f4b18779553e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Mon, 23 Oct 2023 12:51:19 +0100 Subject: [PATCH] basenc: --base16: support lower case hex digits * src/basenc.c (base16_decode_ctx): Convert to uppercase before converting from hex. * tests/basenc/basenc.pl: Add a test case. * NEWS: Mention the change in behavior. Addresses https://bugs.gnu.org/66698 --- NEWS | 3 +++ src/basenc.c | 2 +- tests/basenc/basenc.pl | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 93f98b99d..56c2a4785 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,9 @@ GNU coreutils NEWS -*- outline -*- base32 and base64 no longer require padding when decoding. Previously an error was given for non padded encoded data. + basenc --base16 -d no supports lower case hexadecimal characters. + Previously an error was given for lower case hex digits. + ls --dired now implies long format output without hyperlinks enabled, and will take precedence over previously specified formats or hyperlink mode. diff --git a/src/basenc.c b/src/basenc.c index 12021e900..74cf03a49 100644 --- a/src/basenc.c +++ b/src/basenc.c @@ -577,7 +577,7 @@ base16_decode_ctx (struct base_decode_context *ctx, continue; } - int nib = *in++; + int nib = c_toupper (*in++); if ('0' <= nib && nib <= '9') nib -= '0'; else if ('A' <= nib && nib <= 'F') diff --git a/tests/basenc/basenc.pl b/tests/basenc/basenc.pl index de20d2dbc..2b0e79e93 100755 --- a/tests/basenc/basenc.pl +++ b/tests/basenc/basenc.pl @@ -159,6 +159,7 @@ my @Tests = ['b16_7', '--base16 -d', {IN=>'G'}, {EXIT=>1}, {ERR=>"$prog: invalid input\n"}], ['b16_8', '--base16 -d', {IN=>"AB\nCD"}, {OUT=>"\xAB\xCD"}], + ['b16_9', '--base16 -d', {IN=>lc ($base16_out)}, {OUT=>$base16_in}], -- 2.41.0