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.
This commit is contained in:
Pádraig Brady
2023-03-19 22:22:18 +00:00
parent 82bb131c55
commit eb745e3b95

View File

@@ -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));