While we wait to conclude if we should move to git or not, making me
unsure if I should commit to CVS or git, here is a small patch to fix
a bug discovered by Coverity.

The problem is that the value of rv, extracted from
serial_read_line(), is checked if it is negative.  The unsigned long
value can never be negative, causing errors reported from
serial_read_line() to be ignored.

I propose to fix it by making the temp result variable local to the
scope where it is used, and having the same type as is returned from
the function used to give it a value.  This patch should fix CID
1149026.

Index: src/plugins/serial/serial_terminal.c
===================================================================
RCS file: /cvsroot/ipmitool/ipmitool/src/plugins/serial/serial_terminal.c,v
retrieving revision 1.4
diff -u -3 -p -u -r1.4 serial_terminal.c
--- src/plugins/serial/serial_terminal.c        31 Jan 2014 06:13:58 -0000      
1.4
+++ src/plugins/serial/serial_terminal.c        31 Jan 2014 13:25:09 -0000
@@ -362,12 +362,12 @@ recv_response(struct ipmi_intf * intf, u
 {
        char hex_rs[IPMI_SERIAL_MAX_RESPONSE * 3];
        int i, j, resp_len = 0;
-       unsigned long rv;
        char *p, *pp;
        char ch, str_hex[3];
 
        p = hex_rs;
        while (1) {
+               int rv;
                if ((rv = serial_read_line(intf, p, sizeof(hex_rs) - resp_len)) 
< 0) {
                        /* error */
                        return -1;
@@ -400,7 +400,7 @@ recv_response(struct ipmi_intf * intf, u
                sleep(1);
                serial_flush(intf);
                errno = 0;
-               rv = strtoul(p + 4, &p, 16);
+               unsigned long rv = strtoul(p + 4, &p, 16);
                if ((rv && rv < 0x100 && *p == '\0')
                                || (rv == 0 && !errno)) {
                        /* The message didn't get it through. The upper

As soon as we conclude about cvs vs. git, I'll commit into the winning
repository. :)

-- 
Happy hacking
Petter Reinholdtsen

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to