From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 26 06:20:01 2017 Received: (at submit) by debbugs.gnu.org; 26 Mar 2017 10:20:01 +0000 Received: from localhost ([127.0.0.1]:45038 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs5HE-0000OB-Oh for submit@debbugs.gnu.org; Sun, 26 Mar 2017 06:20:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50743) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cs575-00006W-VC for submit@debbugs.gnu.org; Sun, 26 Mar 2017 06:09:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cs56z-0007dc-3C for submit@debbugs.gnu.org; Sun, 26 Mar 2017 06:09:26 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:58874) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cs56y-0007dV-Vm for submit@debbugs.gnu.org; Sun, 26 Mar 2017 06:09:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cs56x-0000dw-77 for bug-coreutils@gnu.org; Sun, 26 Mar 2017 06:09:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cs56s-0007cf-6R for bug-coreutils@gnu.org; Sun, 26 Mar 2017 06:09:23 -0400 Received: from mail-wr0-x22e.google.com ([2a00:1450:400c:c0c::22e]:36744) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cs56r-0007cN-Rw for bug-coreutils@gnu.org; Sun, 26 Mar 2017 06:09:18 -0400 Received: by mail-wr0-x22e.google.com with SMTP id w11so5654841wrc.3 for ; Sun, 26 Mar 2017 03:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version; bh=xQxikeujTA9SNZp/YGuASyRMxZJN40GePVcKE5HrK5s=; b=NeymQWC+99VqK+4Y7rmQtkghhh+t8WZcATvW3o/RIQ52gwn2lbUBRPnFiDMKpDz7oC SHU5KryNpQT5JlqTQCrHdO64crusNk3yP+olssW5NvfmNuV2B16G3ULhyDl27tqzOCGG NRDvvtWkhib5ouF2EynU2o0aWssZ4st2gv0tN0T2h3+Hgcu4oOQfZnuK8o5KeFmLEj4u HYPj+8SQUHxSTW3wryoErYr3TmSpoI5J0z2EA4zZXEK4/oKL+oSIYM3+zruYhJ64gfai u+gA9LoK1nTYVushe0505dd0dgskrHcY57gBMQpuncGtjVf6NrlW1MOs0TyUCeU3Njli LF1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=xQxikeujTA9SNZp/YGuASyRMxZJN40GePVcKE5HrK5s=; b=nm3igeejemLdHSW7PsdSJ6EaIwc0+6s+701J1dA677f3Hl1+79OGIj187qxaox6eb0 t5jgYBQzHWXwvdnDw5g+Zf0Cmyaq+NgwQZPDRgJ4kFU7lefPgeEkpsj5C4BU1WRuJqn+ TwyA6KoakmkAv3Gu6Sx4cFCVtrv4kwbi8U2D8DFwKNN8HExVpFCUWGnjvaqKcV/NGR/P 3UA+ZpJL+WAfpNTYuXlIqL/FtJAW5y0grpT9LZcZzyyzQnDOF5Nx+VSBB37a/JPNxbmX pX8QmZPQf1P9GGmzR25Z46fwMBmsA3Pbd9Snr/fwwn+5K8ec6LPwmEKXUiIERgYaNCRp 3Smg== X-Gm-Message-State: AFeK/H1WuNPSMpKeLH8WcUlJCpAF8VW1fCa9eS1vpu73hU2gIqR1tJLW1thhPTh/GkXriQ== X-Received: by 10.223.173.165 with SMTP id w34mr9076538wrc.125.1490522956319; Sun, 26 Mar 2017 03:09:16 -0700 (PDT) Received: from [192.168.1.66] ([2.126.244.173]) by smtp.googlemail.com with ESMTPSA id x127sm9824170wmf.31.2017.03.26.03.09.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Mar 2017 03:09:15 -0700 (PDT) To: bug-coreutils@gnu.org From: Toby Kelsey Subject: sha256sum does not correctly parse file with PGP message header (coreutils 8.26) Message-ID: <1fbff762-c6ae-5af7-2c52-8d02088a59d8@gmail.com> Date: Sun, 26 Mar 2017 11:09:10 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4B47107BBDDDD7F5E97FF0BE" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 26 Mar 2017 06:19:59 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) This is a multi-part message in MIME format. --------------4B47107BBDDDD7F5E97FF0BE Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit I notice sha256sum does not correctly parse a file with a PGP header. Here is a script log: toby@toby-pc:/tmp/test$ ls -l total 57068 -rw-r--r-- 1 toby toby 2046 Mar 26 10:30 hashes.txt -rw-r--r-- 1 toby toby 58432932 Mar 26 10:30 monero-linux-x64-v0.10.3.0.tar.bz2 toby@toby-pc:/tmp/test$ grep linux-x64 hashes.txt > single.txt toby@toby-pc:/tmp/test$ cat single.txt f164112bea75dfd3eaaa905d21129820a996bbe6e5d65cb194609c672a71c3fe monero-linux-x64-v0.10.3.0.tar.bz2 toby@toby-pc:/tmp/test$ sha256sum -c single.txt monero-linux-x64-v0.10.3.0.tar.bz2: OK toby@toby-pc:/tmp/test$ sha256sum -c hashes.txt sha256sum: ' monero-win-x64-v0.10.3.0.zip': No such file or directory monero-win-x64-v0.10.3.0.zip: FAILED open or read sha256sum: ' monero-win-x86-v0.10.3.0.zip': No such file or directory monero-win-x86-v0.10.3.0.zip: FAILED open or read sha256sum: ' monero-mac-x64-v0.10.3.0.tar.bz2': No such file or directory monero-mac-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-linux-x64-v0.10.3.0.tar.bz2': No such file or directory monero-linux-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-linux-x86-v0.10.3.0.tar.bz2': No such file or directory monero-linux-x86-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-linux-armv7-v0.10.3.0.tar.bz2': No such file or directory monero-linux-armv7-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-linux-armv8-v0.10.3.0.tar.bz2': No such file or directory monero-linux-armv8-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-freebsd-x64-v0.10.3.0.tar.bz2': No such file or directory monero-freebsd-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero-dragonflybsd-x64-v0.10.3.0.tar.bz2': No such file or directory monero-dragonflybsd-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: ' monero.gui.win.x64.beta.zip': No such file or directory monero.gui.win.x64.beta.zip: FAILED open or read sha256sum: ' monero.gui.mac.x64.beta.tar.bz2': No such file or directory monero.gui.mac.x64.beta.tar.bz2: FAILED open or read sha256sum: ' monero.gui.linux.x64.beta.tar.bz2': No such file or directory monero.gui.linux.x64.beta.tar.bz2: FAILED open or read sha256sum: ' monero.gui.linux.x86.beta.tar.bz2': No such file or directory monero.gui.linux.x86.beta.tar.bz2: FAILED open or read sha256sum: WARNING: 22 lines are improperly formatted sha256sum: WARNING: 13 listed files could not be read There is a spurious extra space at the start of filenames in the larger file. If I just extract the hash lines it works: toby@toby-pc:/tmp/test$ egrep zip\|bz2 hashes.txt > hashes1.txt toby@toby-pc:/tmp/test$ sha256sum -c hashes1.txt sha256sum: monero-win-x64-v0.10.3.0.zip: No such file or directory monero-win-x64-v0.10.3.0.zip: FAILED open or read sha256sum: monero-win-x86-v0.10.3.0.zip: No such file or directory monero-win-x86-v0.10.3.0.zip: FAILED open or read sha256sum: monero-mac-x64-v0.10.3.0.tar.bz2: No such file or directory monero-mac-x64-v0.10.3.0.tar.bz2: FAILED open or read monero-linux-x64-v0.10.3.0.tar.bz2: OK sha256sum: monero-linux-x86-v0.10.3.0.tar.bz2: No such file or directory monero-linux-x86-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: monero-linux-armv7-v0.10.3.0.tar.bz2: No such file or directory monero-linux-armv7-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: monero-linux-armv8-v0.10.3.0.tar.bz2: No such file or directory monero-linux-armv8-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: monero-freebsd-x64-v0.10.3.0.tar.bz2: No such file or directory monero-freebsd-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: monero-dragonflybsd-x64-v0.10.3.0.tar.bz2: No such file or directory monero-dragonflybsd-x64-v0.10.3.0.tar.bz2: FAILED open or read sha256sum: monero.gui.win.x64.beta.zip: No such file or directory monero.gui.win.x64.beta.zip: FAILED open or read sha256sum: monero.gui.mac.x64.beta.tar.bz2: No such file or directory monero.gui.mac.x64.beta.tar.bz2: FAILED open or read sha256sum: monero.gui.linux.x64.beta.tar.bz2: No such file or directory monero.gui.linux.x64.beta.tar.bz2: FAILED open or read sha256sum: monero.gui.linux.x86.beta.tar.bz2: No such file or directory monero.gui.linux.x86.beta.tar.bz2: FAILED open or read sha256sum: WARNING: 12 listed files could not be read The hash file is from Regards, Toby --------------4B47107BBDDDD7F5E97FF0BE Content-Type: text/plain; charset=UTF-8; name="hashes.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hashes.txt" LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEEyNTYKClRoaXMg R1BHLXNpZ25lZCBtZXNzYWdlIGV4aXN0cyB0byBjb25maXJtIHRoZSBTSEEyNTYgc3VtcyBv biBNb25lcm8gYmluYXJpZXMuCgpQbGVhc2UgdmVyaWZ5IHRoZSBzaWduYXR1cmUgYWdhaW5z dCB0aGUgc2lnbmF0dXJlIGZvciBmbHVmZnlwb255IGluIHRoZQpzb3VyY2UgY29kZSByZXBv c2l0b3J5ICgvdXRpbHMvZ3BnX2tleXMpLgoKMzdhNTdkMWJlODFiNjExOWFjMDZkM2Y2Mzdi NGM1NmZjNjI1ZjNlNzkwZjM0OTFjMWJkY2E0ZDYyOTAyYmYxMyAgbW9uZXJvLXdpbi14NjQt djAuMTAuMy4wLnppcAo3Zjk1YmRjZjRkZjIzMmYzN2M0NTA1MjM4MzFmMzZjY2I5ZmRiMmU1 MGMxYjViMGE1Mjg1ZDUwNTQ5ZDI3M2JlICBtb25lcm8td2luLXg4Ni12MC4xMC4zLjAuemlw CjhlNjE3MGYyNzRlNjkwMTBiYmU2NjJkODgyOGM4ZTRiMGI0YWNkYjBhMWEzNjk5YjViOTdh ZjhjM2E1MTZhOTQgIG1vbmVyby1tYWMteDY0LXYwLjEwLjMuMC50YXIuYnoyCmYxNjQxMTJi ZWE3NWRmZDNlYWFhOTA1ZDIxMTI5ODIwYTk5NmJiZTZlNWQ2NWNiMTk0NjA5YzY3MmE3MWMz ZmUgIG1vbmVyby1saW51eC14NjQtdjAuMTAuMy4wLnRhci5iejIKYjhiZDI1OGI4MjhkOGVh NDVhN2MyNTk1MTg3YzEzYjVlNjI0ZjQ1YWU5MjljYjY0YWM4OWUzYTAzMDMwMjMxNiAgbW9u ZXJvLWxpbnV4LXg4Ni12MC4xMC4zLjAudGFyLmJ6MgowM2IyZjNmMzBjN2QwNDcxNDJjYmZj ZDYxNDc2MmYzZDE2NWQ2NDQ2NGUzZTViMWE1YjBjNDJhYmE5NTcwZDZhICBtb25lcm8tbGlu dXgtYXJtdjctdjAuMTAuMy4wLnRhci5iejIKNmIyOWM1NmNhOGQ3MWYyM2YxM2I2OGQ0OGUz OWUzNWIxZDdjN2MyMTJjZjAwZjNkNThiMGQyZDliNjQzNWM0YyAgbW9uZXJvLWxpbnV4LWFy bXY4LXYwLjEwLjMuMC50YXIuYnoyCjgzNGI1NmVmY2NjNWFiMDk4NWM3Zjg3MDQ0OTcwNGJh MzkwYzc5MTA0ZWNmYzBiNjM5MzVkZmI0ZjcwYzZjZjkgIG1vbmVyby1mcmVlYnNkLXg2NC12 MC4xMC4zLjAudGFyLmJ6Mgo0YWI1YjJhNzQ1Y2E1ZWE0Y2FkMjUzMTY2ZmY4MGZmNjBiYjQ4 NzFmNmM4ZmE4MWZmMDMyY2RmMjM3ZjZlMzcyICBtb25lcm8tZHJhZ29uZmx5YnNkLXg2NC12 MC4xMC4zLjAudGFyLmJ6MgoKY2I4YmRmMzZmYjU2NzM5YTBmYTc0NmJlYzhkZDUxZmIzNDc5 ZDUxYTNiOGYwY2U0MWE3NzFmMWQ1YTkyNGJkYiAgbW9uZXJvLmd1aS53aW4ueDY0LmJldGEu emlwCjkwN2JmYjQ4MzJjNzRkZTZjZWM3ZGY3MzBkZmNlNWQ5Y2NjMWU2ZGUwOWI2YTQ1NDZj YjllZWUxZjgyNDI5NjggIG1vbmVyby5ndWkubWFjLng2NC5iZXRhLnRhci5iejIKY2VjYmU0 YjIzZjc3NzQ0MmRlODYxYmMwOTgxYWYwODU3ZGFiMDQzZWQ2M2JlOThmNzY4Y2RkMDA4MjVh OGQwOSAgbW9uZXJvLmd1aS5saW51eC54NjQuYmV0YS50YXIuYnoyCmRhYWJkMTFiMjcxNjg1 Y2VkZjVkNjMyMWNiZGU1ZTZiN2MyNjkxNjMwYTQzNTVhOTczZmMwY2I5OWIxZDJkYzkgIG1v bmVyby5ndWkubGludXgueDg2LmJldGEudGFyLmJ6MgoKUmljY2FyZG8gImZsdWZmeXBvbnki IFNwYWduaQotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQpWZXJzaW9uOiBHbnVQRyB2 MgoKaVFFY0JBRUJDQUFHQlFKWTF2MlVBQW9KRUZWRExmTWN6VS9OZ1ZvSUFMZFpGd01TRkxB dDFUb01Uc1pmc3UvYgp1b0ZmY3FYNTFXVnhURkFSTEkxVjBFaEV5L3FVQnpmTFhGUjkrVjdw THZXblc3U1dhcHhGRFMxZmIxSmhtOWVOCnp1b2FFWmhaMitPTXJJcWZMWU9uWnJ6OHRhVEFp NWRxcFJVK09Zc3ZYRDFGbGdnZkZMWGZ2OWtnYUd3VzJoREgKMTBzODlpQ3YzZ1Z2UXI0clJL S2F2M0JrSVBzMHpObUZ4bENPNkJQbkJ2UmN1MGg1M2hlTVNMbHdPeGRBM0xIZwpjZnkyNlF0 YUIycFpaNW5lQVVtWjV6M1A2VlhZTm9uQVptNmpmai9mZ0FZRkUwbGpJNUxEMnZHTCtLVzNT bFRVCklhUVZiWktMQW51cmgxWmgxaC9udkF2MFlBOEllRFZXSHVLbXd1czFaQldTM3oyR0Nv ZHQ4c3lmRGkrdnlvZz0KPTBYV1kKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0t --------------4B47107BBDDDD7F5E97FF0BE-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 26 20:14:05 2017 Received: (at 26263-done) by debbugs.gnu.org; 27 Mar 2017 00:14:05 +0000 Received: from localhost ([127.0.0.1]:46444 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csIIO-0004b6-Mj for submit@debbugs.gnu.org; Sun, 26 Mar 2017 20:14:04 -0400 Received: from midir.magicbluesmoke.com ([82.195.144.46]:60022 helo=mail.magicbluesmoke.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csIIL-0004aZ-W9 for 26263-done@debbugs.gnu.org; Sun, 26 Mar 2017 20:14:02 -0400 Received: from localhost.localdomain (unknown [166.177.248.235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.magicbluesmoke.com (Postfix) with ESMTPSA id E2B6A98C9; Mon, 27 Mar 2017 01:13:59 +0100 (IST) Subject: Re: bug#26263: sha256sum does not correctly parse file with PGP message header (coreutils 8.26) To: Toby Kelsey , 26263-done@debbugs.gnu.org References: <1fbff762-c6ae-5af7-2c52-8d02088a59d8@gmail.com> From: =?UTF-8?Q?P=c3=a1draig_Brady?= Message-ID: <445c0f61-0cbb-a08e-7335-3e2dc1088a5e@draigBrady.com> Date: Sun, 26 Mar 2017 17:13:56 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <1fbff762-c6ae-5af7-2c52-8d02088a59d8@gmail.com> Content-Type: multipart/mixed; boundary="------------10ED34D3A914CEBA383BBA5C" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 26263-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) This is a multi-part message in MIME format. --------------10ED34D3A914CEBA383BBA5C Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 26/03/17 03:09, Toby Kelsey wrote: > I notice sha256sum does not correctly parse a file with a PGP header. Here is a script log: > toby@toby-pc:/tmp/test$ sha256sum -c hashes.txt > > sha256sum: ' monero-win-x64-v0.10.3.0.zip': No such file or directory > monero-win-x64-v0.10.3.0.zip: FAILED open or read > There is a spurious extra space at the start of filenames in the larger file. > If I just extract the hash lines it works: > The hash file is from The attached should fix this issue. thanks, Pádraig --------------10ED34D3A914CEBA383BBA5C Content-Type: text/x-patch; name="md5sum-bad-bsd-r.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="md5sum-bad-bsd-r.patch" >From 1a1029ea037d70d13eef05d29d17980fac729e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Sun, 26 Mar 2017 17:04:36 -0700 Subject: [PATCH] md5sum,b2sum,sha*sum: don't erroneously trigger BSD reversed mode * src/md5sum.c (split_3): Verify hex digits internally before triggering the global bsd_reversed mode flag. (bsd_split_3): Likewise. * tests/misc/md5sum-bsd.sh: Add a test case. * NEWS: Mention the bug fix. Fixes http://bugs.gnu.org/26263 --- NEWS | 4 ++++ src/md5sum.c | 39 +++++++++++++++++++++------------------ tests/misc/md5sum-bsd.sh | 7 +++++++ 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/NEWS b/NEWS index e8d6d34..4604318 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,10 @@ GNU coreutils NEWS -*- outline -*- split no longer exits when invocations of a --filter return EPIPE. [bug introduced in coreutils-8.26] + md5sum --check no longer incorrectly enables BSD reversed format mode when + ignoring some non checksum lines. This also affects sha*sum and b2sum. + [bug introduced in coreutils-8.14] + * Noteworthy changes in release 8.27 (2017-03-08) [stable] diff --git a/src/md5sum.c b/src/md5sum.c index e58a68e..91cdfb2 100644 --- a/src/md5sum.c +++ b/src/md5sum.c @@ -346,6 +346,21 @@ filename_unescape (char *s, size_t s_len) return s; } +/* Return true if S is a NUL-terminated string of DIGEST_HEX_BYTES hex digits. + Otherwise, return false. */ +static bool _GL_ATTRIBUTE_PURE +hex_digits (unsigned char const *s) +{ + unsigned int i; + for (i = 0; i < digest_hex_bytes; i++) + { + if (!isxdigit (*s)) + return false; + ++s; + } + return *s == '\0'; +} + /* Split the checksum string S (of length S_LEN) from a BSD 'md5' or 'sha1' command into two parts: a hexadecimal digest, and the file name. S is modified. Return true if successful. */ @@ -386,7 +401,8 @@ bsd_split_3 (char *s, size_t s_len, unsigned char **hex_digest, i++; *hex_digest = (unsigned char *) &s[i]; - return true; + + return hex_digits (*hex_digest); } /* Split the string S (of length S_LEN) into three parts: @@ -492,6 +508,9 @@ split_3 (char *s, size_t s_len, s[i++] = '\0'; + if (! hex_digits (*hex_digest)) + return false; + /* If "bsd reversed" format detected. */ if ((s_len - i == 1) || (s[i] != ' ' && s[i] != '*')) { @@ -521,21 +540,6 @@ split_3 (char *s, size_t s_len, return true; } -/* Return true if S is a NUL-terminated string of DIGEST_HEX_BYTES hex digits. - Otherwise, return false. */ -static bool _GL_ATTRIBUTE_PURE -hex_digits (unsigned char const *s) -{ - unsigned int i; - for (i = 0; i < digest_hex_bytes; i++) - { - if (!isxdigit (*s)) - return false; - ++s; - } - return *s == '\0'; -} - /* If ESCAPE is true, then translate each NEWLINE byte to the string, "\\n", and each backslash to "\\\\". */ static void @@ -702,8 +706,7 @@ digest_check (const char *checkfile_name) line[--line_length] = '\0'; if (! (split_3 (line, line_length, &hex_digest, &binary, &filename) - && ! (is_stdin && STREQ (filename, "-")) - && hex_digits (hex_digest))) + && ! (is_stdin && STREQ (filename, "-")))) { ++n_misformatted_lines; diff --git a/tests/misc/md5sum-bsd.sh b/tests/misc/md5sum-bsd.sh index e2ad8db..dfd2cef 100755 --- a/tests/misc/md5sum-bsd.sh +++ b/tests/misc/md5sum-bsd.sh @@ -36,6 +36,13 @@ sed 's/ / /' check.md5sum > check.md5 md5sum --strict -c check.md5sum || fail=1 md5sum --strict -c check.md5 || fail=1 +# Ensure we don't trigger BSD reversed format with GPG headers etc. +echo '____not_all_hex_so_no_match_____ blah' > check2.md5sum +cat check.md5sum >> check2.md5sum +md5sum -c check2.md5sum 2>check2.err || fail=1 +echo 'md5sum: WARNING: 1 line is improperly formatted' >check2.exp +compare check2.exp check2.err || fail=1 + # If we skip the first entry in the BSD format checksums # then it'll be detected as standard format and error. # This unlikely caveat was thought better than mandating -- 2.9.3 --------------10ED34D3A914CEBA383BBA5C-- From unknown Mon Jun 23 20:17:29 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 24 Apr 2017 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator