bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: md5sum and filenames containing \


From: Steve Lilly
Subject: Re: md5sum and filenames containing \
Date: Tue, 05 Apr 2005 01:24:51 +0100
User-agent: Mozilla Thunderbird 0.8 (X11/20040913)

Olivier Delhomme wrote:

On Sun, 03 Apr 2005 23:34:00 +0100, Steve Lilly was saying :

Dear GNU,

I was testing one of my own scripts for robustness against exotic filenames containing "\" when I noticed a peculiar behaviour from the md5sum utility (version 5.2.1). To demonstrate:

address@hidden test]$ touch test\\test
address@hidden test]$ ls
test\test
address@hidden test]$ md5sum *
\d41d8cd98f00b204e9800998ecf8427e  test\\test

I have tried this with bash and tcsh. ls confirms the file has a single \ character. It appears (to me at least) that md5sum is escaping the \ to \\, but I'm baffled as to the extra \ at the beginning of the hash!

Here I have coreutils 5.2.1, debian 3.1 unstable, bash 3.00.16(1)
and I can not reproduce your problem. The hash value is correct and
without the \ at the beginning.

Please could you tell us which is your system and bash version ?

Regards,
Steve Lilly

Regards,
Olivier Delhomme.

GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
Fedora Core release 2 (Tettnang)

On a little further investigation, I think I have found the culprit in md5sum.c:

230:
/* Ignore this line if it is too short.
Each line must have at least `min_digest_line_length - 1' (or one more, if the first is a backslash) more characters to contain correct message digest
  information.  */
if (s_len - i < min_digest_line_length + (s[i] == '\\'))
 return 1;

if (s[i] == '\\')
 {
   ++i;
   escaped_filename = 1;
 }

693:
/* Output a leading backslash if the file name contains
  a newline or backslash.  */
if (strchr (file, '\n') || strchr (file, '\\'))
 putchar ('\\');

So it appears to be intended behaviour, though why I'm not sure...

Steve Lilly.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]