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: Michael Debertol <michael.debertol <at> gmail.com>
Subject: bug#50070: closed (Re: bug#50070: 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:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

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

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 50070 <at> debbugs.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: 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 3 (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)]
[Message part 5 (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




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.