|
From: | Michael Debertol |
Subject: | 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 22:15:58 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:93.0) Gecko/20100101 Thunderbird/93.0a1 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |