From 5f1a18653d0bd671c1df6ccfa08e99c66a0e7ad1 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Wed, 14 May 2014 09:52:34 +0200 Subject: [PATCH] Initialize the termios structure. The previous commit exposed another issue. The termios structure may contain padding bytes. Because the content of those padding bytes is unspecified, they may contain some random data, which causes the memcmp to fail. Explicitly initializing the termios structure with memset, will also set the padding bytes to zero. --- src/serial_posix.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/serial_posix.c b/src/serial_posix.c index 80334b0..52e9191 100644 --- a/src/serial_posix.c +++ b/src/serial_posix.c @@ -233,6 +233,7 @@ serial_configure (serial_t *device, int baudrate, int databits, int parity, int // Retrieve the current settings. struct termios tty; + memset (&tty, 0, sizeof (tty)); if (tcgetattr (device->fd, &tty) != 0) { SYSERROR (device->context, errno); return -1; @@ -422,6 +423,7 @@ serial_configure (serial_t *device, int baudrate, int databits, int parity, int // tcgetattr() to check that all changes have been performed successfully. struct termios active; + memset (&active, 0, sizeof (active)); if (tcgetattr (device->fd, &active) != 0) { SYSERROR (device->context, errno); return -1;