GNU bug report logs - #50070
chmod reads uninitialized variables when fts_info is an error and -v is set, leading to random error messages

Previous Next

Package: coreutils;

Reported by: Michael Debertol <michael.debertol <at> gmail.com>

Date: Sun, 15 Aug 2021 20:17:01 UTC

Severity: normal

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#50070: closed (chmod reads uninitialized variables when
 fts_info is an error and -v is set, leading to random error messages)
Date: Mon, 16 Aug 2021 04:34:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 15 Aug 2021 21:33:26 -0700
with message-id <6eabb0d5-0ce2-a52e-3404-4feff67c3b9a <at> cs.ucla.edu>
and subject line Re: bug#50070: chmod reads uninitialized variables when fts_info is an error and -v is set, leading to random error messages
has caused the debbugs.gnu.org bug report #50070,
regarding chmod reads uninitialized variables when fts_info is an error and -v is set, leading to random error messages
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
50070: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=50070
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Michael Debertol <michael.debertol <at> gmail.com>
To: bug-coreutils <at> gnu.org
Subject: chmod reads uninitialized variables when fts_info is an error and -v
 is set, leading to random error messages
Date: Sun, 15 Aug 2021 22:15:58 +0200
Hi,

I noticed that when running chmod with -v on a dangling symlink the 
error message is somewhat random:

> ln -s file-that-does-not-exist lnk

> chmod -w lnk -v

> chmod: cannot operate on dangling symlink 'lnk'

> failed to change mode of 'lnk' from 0000 (---------) to 7777 (rwsrwsrwt)

> chmod -w lnk -v

> chmod: cannot operate on dangling symlink 'lnk'

> failed to change mode of 'lnk' from 0000 (---------) to 7775 (rwsrwsr-t)

> chmod -w lnk -v

> chmod: cannot operate on dangling symlink 'lnk'

> failed to change mode of 'lnk' from 0000 (---------) to 7774 (rwsrwsr-T)


(note that the value for "to" is different)

This appears to be because in the process_file function, old_mode and 
new_mode are only set when ok is true. When chmod encounters a dangling 
symlink, ok will be false and old_mode/new_mode won't be set. However, 
old_mode and new_mode are still accessed for the invocation of 
describe_change if verbosity is set to high, leading to incorrect error 
messages.

I think a better behavior could be to not print the "from mode to mode" 
part of the error message if the file could not be accessed, since it is 
meaningless anyways.

Have a nice day,

Michael



[Message part 3 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Michael Debertol <michael.debertol <at> gmail.com>
Cc: 50070-done <at> debbugs.gnu.org
Subject: Re: bug#50070: chmod reads uninitialized variables when fts_info is
 an error and -v is set, leading to random error messages
Date: Sun, 15 Aug 2021 21:33:26 -0700
[Message part 4 (text/plain, inline)]
Thanks for reporting the bug. I installed the attached patch to fix it.
[0001-chmod-fix-use-of-uninitialized-var-if-v.patch (text/x-patch, attachment)]

This bug report was last modified 3 years and 275 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.