summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2023-03-19 22:22:18 +0000
committerPádraig Brady <P@draigBrady.com>2023-03-19 22:25:50 +0000
commiteb745e3b95a79bdad98aaa9c4e753145f995c313 (patch)
tree8a3d8f7764d52658635975a0d809224fedd3e58b
parent82bb131c551039971d6668dedc1975a770df88b9 (diff)
downloadcoreutils-eb745e3b95a79bdad98aaa9c4e753145f995c313.tar.gz
stty: ensure arbitrary data is not displayed
* src/stty.c (main): Use static structures to ensure they're initialized (to zero), so that random data is not displayed, or compared resulting in a inaccurate failure reported to users. This was seen on musl libc where some parts of the termios c_cc array were not initialized by tcgetattr(). Reported by Bruno Haible.
-rw-r--r--src/stty.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/stty.c b/src/stty.c
index fb7feefab..607a4e7bb 100644
--- a/src/stty.c
+++ b/src/stty.c
@@ -1290,7 +1290,9 @@ apply_settings (bool checking, char const *device_name,
int
main (int argc, char **argv)
{
- struct termios mode;
+ /* Initialize to all zeroes so there is no risk memcmp will report a
+ spurious difference in an uninitialized portion of the structure. */
+ static struct termios mode;
enum output_type output_type;
int optc;
@@ -1426,7 +1428,9 @@ main (int argc, char **argv)
if (require_set_attr)
{
- struct termios new_mode;
+ /* Initialize to all zeroes so there is no risk memcmp will report a
+ spurious difference in an uninitialized portion of the structure. */
+ static struct termios new_mode;
if (tcsetattr (STDIN_FILENO, tcsetattr_options, &mode))
die (EXIT_FAILURE, errno, "%s", quotef (device_name));