Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -flto=auto -ffat-lto-objects -flto=auto
-ffat-lto-objects -fstack-protector-strong -Wformat
-Werror=format-security
-Wall
uname output: Linux junior 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30
15:54:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.1
Patch Level: 16
Release Status: release
Description:
Listed in the changes:
c. Here documents and here strings now use pipes for the
expanded
document if it's smaller than the pipe buffer size,
reverting
to temporary files if it's larger.
This causes problems with many programs suffering from the
TOCTOU
bug of checking whether or not the input is actually a file
instead of just using it as one.
e.g. "repo" tool performs in manifest_xml.py:
if not os.path.isfile(path):
raise ManifestParseError('manifest %s not found' % name)
This bug is clearly in repo and (these other tools) and
certainly is
not bash's fault but there is going to be a lot of breakage
with the
short and medium term remedy to downgrade to bash 5.0
I *like* that files aren't needed any more but there are
decades
of scripts integrating with tools than make such checks, and
which
work on the unknown accidental assumption that heredocs are
files.
Repeat-By:
python2 -c 'import os; print(os.path.isfile("/dev/fd/3"))'
3<<<x
emits True for bash 5.0 and before but emits False for bash 5.1
Fix:
Please could we at least have a shopt to maintain the old
behaviour?