From d733f2ec265d358d55370a79bb9d550a2d0ad40e Mon Sep 17 00:00:00 2001 From: =?utf8?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 93f98b99d8..1dfeb7390a 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 now 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 12021e9008..74cf03a49b 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 de20d2dbcf..2b0e79e932 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.47.2