On 7/12/25 12:52 PM, Emanuele Torre wrote:
User zen_desu mentioned this bug report on the #bash IRC channel of libera.chat today: https://github.com/desultory/ugrd/pull/328Basically, in bash 5.3, if you try to source a /sys/block/*/uevent file; example: $ cat /sys/block/sda/uevent MAJOR=8 MINOR=0 DEVNAME=sda DEVTYPE=disk DISKSEQ=1 source or . will fail printing the error message"bash: ${file}: Success"
Hmmmm. Let's see here. One of the assumptions bash makes is that when the kernel tells it the size of a regular file using stat(2), it's telling the truth, and that reading fewer bytes than that when asking for the entire file indicates some kind of problem.
This happens because /sys/block/*/uevent show up as regular files, and reports a file size of 4096 in stat:
Which isn't the true file size.
..and there is a new check in evalfile_internal() that treats like an error to not get filesize bytes after one read from a regular file (given a large enough buffer)
Yes. It seems like that assumption isn't valid on Linux. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/
OpenPGP_signature.asc
Description: OpenPGP digital signature