From: Pádraig Brady
Date: Mon, 23 Oct 2023 11:51:19 +0000 (+0100) Subject: basenc: --base16: support lower case hex digits X-Git-Tag: v9.5~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d733f2ec265d358d55370a79bb9d550a2d0ad40e;p=thirdparty%2Fcoreutils.git 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 --- 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}],