[PATCH] seccomp.sh: Silence stty errors
When printing list of allowed syscalls the width of terminal is
obtained for nicer output (see commit below). The width is
obtained by running 'stty'. While this works when building from a
console, it doesn't work during rpmbuild/emerge/.. as stdout is
usually not a console but a logfile and stdin is usually
/dev/null or something. This results in stty reporting errors
like this:
stty: 'standard input': Inappropriate ioctl for device
Redirect stty's stderr to /dev/null to silence it.
Fixes: 712ca3235329b049bf9a4e481ba38a4c64768e8b
Signed-off-by: Michal Privoznik
On Fri, Feb 21, 2025 at 12:53:13PM +0100, Michal Privoznik wrote:
When printing list of allowed syscalls the width of terminal is obtained for nicer output (see commit below). The width is obtained by running 'stty'. While this works when building from a console, it doesn't work during rpmbuild/emerge/.. as stdout is usually not a console but a logfile and stdin is usually /dev/null or something. This results in stty reporting errors like this:
stty: 'standard input': Inappropriate ioctl for device
Redirect stty's stderr to /dev/null to silence it.
Fixes: 712ca3235329b049bf9a4e481ba38a4c64768e8b Signed-off-by: Michal Privoznik
Reviewed-by: David Gibson
---
I've noticed the error when running emerge on my local system, but then also found it on a recent koji build:
https://kojipkgs.fedoraproject.org//packages/passt/0%5E20250217.ga1e48a0/2.f...
seccomp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seccomp.sh b/seccomp.sh index 4c521ae..a7bc417 100755 --- a/seccomp.sh +++ b/seccomp.sh @@ -255,7 +255,7 @@ for __p in ${__profiles}; do __calls="${__calls} ${EXTRA_SYSCALLS:-}" __calls="$(filter ${__calls})"
- cols="$(stty -a | sed -n 's/.*columns \([0-9]*\).*/\1/p' || :)" 2>/dev/null + cols="$(stty -a 2>/dev/null | sed -n 's/.*columns \([0-9]*\).*/\1/p' || :)" 2>/dev/null case $cols in [0-9]*) col_args="-w ${cols}";; *) col_args="";; esac echo "seccomp profile ${__p} allows: ${__calls}" | tr '\n' ' ' | fmt -t ${col_args}
-- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
On Mon, 24 Feb 2025 13:05:40 +1100
David Gibson
On Fri, Feb 21, 2025 at 12:53:13PM +0100, Michal Privoznik wrote:
When printing list of allowed syscalls the width of terminal is obtained for nicer output (see commit below). The width is obtained by running 'stty'. While this works when building from a console, it doesn't work during rpmbuild/emerge/.. as stdout is usually not a console but a logfile and stdin is usually /dev/null or something. This results in stty reporting errors like this:
stty: 'standard input': Inappropriate ioctl for device
Redirect stty's stderr to /dev/null to silence it.
Fixes: 712ca3235329b049bf9a4e481ba38a4c64768e8b Signed-off-by: Michal Privoznik
Reviewed-by: David Gibson
Although, I also wonder if we'd do just as well to use the shell provided $COLUMNS variable without poking at the terminal ourselves.
No, because that's a Bash/KSH thing. At least ash, dash and csh don't have it. -- Stefano
On Mon, Feb 24, 2025 at 08:38:24AM +0100, Stefano Brivio wrote:
On Mon, 24 Feb 2025 13:05:40 +1100 David Gibson
wrote: On Fri, Feb 21, 2025 at 12:53:13PM +0100, Michal Privoznik wrote:
When printing list of allowed syscalls the width of terminal is obtained for nicer output (see commit below). The width is obtained by running 'stty'. While this works when building from a console, it doesn't work during rpmbuild/emerge/.. as stdout is usually not a console but a logfile and stdin is usually /dev/null or something. This results in stty reporting errors like this:
stty: 'standard input': Inappropriate ioctl for device
Redirect stty's stderr to /dev/null to silence it.
Fixes: 712ca3235329b049bf9a4e481ba38a4c64768e8b Signed-off-by: Michal Privoznik
Reviewed-by: David Gibson
Although, I also wonder if we'd do just as well to use the shell provided $COLUMNS variable without poking at the terminal ourselves.
No, because that's a Bash/KSH thing. At least ash, dash and csh don't have it.
Having marginally uglier formatting in those shells doesn't strike me as a disaster. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
On Fri, 21 Feb 2025 12:53:13 +0100
Michal Privoznik
When printing list of allowed syscalls the width of terminal is obtained for nicer output (see commit below). The width is obtained by running 'stty'. While this works when building from a console, it doesn't work during rpmbuild/emerge/.. as stdout is usually not a console but a logfile and stdin is usually /dev/null or something. This results in stty reporting errors like this:
stty: 'standard input': Inappropriate ioctl for device
Redirect stty's stderr to /dev/null to silence it.
Fixes: 712ca3235329b049bf9a4e481ba38a4c64768e8b Signed-off-by: Michal Privoznik
Applied, thanks!
---
I've noticed the error when running emerge on my local system, but then also found it on a recent koji build:
https://kojipkgs.fedoraproject.org//packages/passt/0%5E20250217.ga1e48a0/2.f...
Funny, I'm not sure what's the magic involved, but for some reason it doesn't happen on Debian builds: https://buildd.debian.org/status/fetch.php?pkg=passt&arch=mips64el&ver=0.0%7Egit20250217.a1e48a0-1&stamp=1739783665&raw=0 -- Stefano
participants (3)
-
David Gibson
-
Michal Privoznik
-
Stefano Brivio