[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: RE: [PATCH] XXXsum: handle binary sums with " " in the path
From: David Laight <David.Laight () ACULAB ! COM>
Date: 2022-01-07 11:16:23
Message-ID: fea7bb4d13b34174bde99d601d014f15 () AcuMS ! aculab ! com
[Download RAW message or body]
From: Emanuele Giacomelli
> Sent: 07 January 2022 11:00
>
> If a line specifies a binary checksum whose path contains two adjacent
> spaces, when checking digests with -c the two spaces will be used as the
> separator between the digest and the pathname instead of " *", as shown:
>
> $ echo foo > "/tmp/two spaces"
> $ md5sum -b "/tmp/two spaces" # This is GNU md5sum
> d3b07384d113edec49eaa6238ad5ff00 */tmp/two spaces
> $ md5sum -b "/tmp/two spaces" | ./busybox md5sum -c
> md5sum: can't open 'spaces': No such file or directory
> spaces: FAILED
> md5sum: WARNING: 1 of 1 computed checksums did NOT match
>
> The patch looks for both markers and uses the one that is closer to the
> start.
> ---
> coreutils/md5_sha1_sum.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
> index 3b389cb6b..b7c1495d2 100644
> --- a/coreutils/md5_sha1_sum.c
> +++ b/coreutils/md5_sha1_sum.c
> @@ -298,12 +298,17 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
> while ((line = xmalloc_fgetline(pre_computed_stream)) != NULL) {
> uint8_t *hash_value;
> char *filename_ptr;
> + char *filename_ptr_bin;
>
> count_total++;
> filename_ptr = strstr(line, " ");
> /* handle format for binary checksums */
> + filename_ptr_bin = strstr(line, " *");
> if (filename_ptr == NULL) {
> - filename_ptr = strstr(line, " *");
> + filename_ptr = filename_ptr_bin;
> + } else {
> + filename_ptr = (filename_ptr_bin != NULL && filename_ptr_bin <
> filename_ptr) ?
> + filename_ptr_bin : filename_ptr;
Wouldn't it be easier to just use strchr() to find a ' ' and then
check the next character for ' ' or '*' ?
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic