bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 01/14] term: fix error handling in hurdio_mdmctl


From: Justus Winter
Subject: [PATCH 01/14] term: fix error handling in hurdio_mdmctl
Date: Fri, 8 Nov 2013 21:24:09 +0100

hurdio_mdmctl allows one to set and clear bits from the modem control
bit vector. However, plausible code paths exist that leave oldbits
uninitialized. Fix this by returning an error instead if retrieving
the oldbits failed and the bit set or clear operation was selected.

Found using the Clang Static Analyzer.

* term/hurdio.c (hurdio_mdmctl): Fix error handling.
---
 term/hurdio.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/term/hurdio.c b/term/hurdio.c
index 357ab38..e9e80e9 100644
--- a/term/hurdio.c
+++ b/term/hurdio.c
@@ -585,10 +585,15 @@ hurdio_mdmctl (int how, int bits)
            {
              error_t err = tioctl_tiocmodg (ioport, &oldbits);
              if (err && (err == EMIG_BAD_ID || err == EOPNOTSUPP))
-               tioc_caps &= ~TIOC_CAP_MODG;
+               {
+                 tioc_caps &= ~TIOC_CAP_MODG;
+                 return err;
+               }
              else if (err)
                return err;
            }
+         else
+           return EOPNOTSUPP;
        }
 
       if (how == MDMCTL_BIS)
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]