]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
roboswitch: Check some read operation results
authorJouni Malinen <j@w1.fi>
Sat, 9 Mar 2019 16:56:48 +0000 (18:56 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 9 Mar 2019 16:56:48 +0000 (18:56 +0200)
This gets rid of some static analyzer warnings about uninitialized
variables being used in comparisons or write operations.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/drivers/driver_roboswitch.c

index e8a51354dd0cc8156e2bf5039864ea625bc9116d..9beb6c46d367cbcb8053089be43582b61b5cb900 100644 (file)
@@ -290,21 +290,26 @@ static int wpa_driver_roboswitch_leave(struct wpa_driver_roboswitch_data *drv,
 
        wpa_driver_roboswitch_addr_be16(addr, addr_be16);
 
-       wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE, ROBO_ARLCTRL_CONF,
-                                  &_read, 1);
+       if (wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                      ROBO_ARLCTRL_CONF, &_read, 1) < 0)
+               return -1;
        /* If ARL control is disabled, there is nothing to leave. */
        if (!(_read & (1 << 4))) return -1;
 
-       wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
-                                  ROBO_ARLCTRL_ADDR_1, addr_read, 3);
-       wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE, ROBO_ARLCTRL_VEC_1,
-                                  &ports_read, 1);
+       if (wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                      ROBO_ARLCTRL_ADDR_1, addr_read, 3) < 0 ||
+           wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                      ROBO_ARLCTRL_VEC_1, &ports_read, 1) < 0)
+               return -1;
        /* check if we occupy multiport address 1 */
        if (os_memcmp(addr_read, addr_be16, 6) == 0 && ports_read == ports) {
-               wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
-                                          ROBO_ARLCTRL_ADDR_2, addr_read, 3);
-               wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
-                                          ROBO_ARLCTRL_VEC_2, &ports_read, 1);
+               if (wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                              ROBO_ARLCTRL_ADDR_2, addr_read,
+                                              3) < 0 ||
+                   wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                              ROBO_ARLCTRL_VEC_2, &ports_read,
+                                              1) < 0)
+                       return -1;
                /* and multiport address 2 */
                if (os_memcmp(addr_read, addr_be16, 6) == 0 &&
                    ports_read == ports) {
@@ -327,10 +332,13 @@ static int wpa_driver_roboswitch_leave(struct wpa_driver_roboswitch_data *drv,
                                                    &ports_read, 1);
                }
        } else {
-               wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
-                                          ROBO_ARLCTRL_ADDR_2, addr_read, 3);
-               wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
-                                          ROBO_ARLCTRL_VEC_2, &ports_read, 1);
+               if (wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                              ROBO_ARLCTRL_ADDR_2, addr_read,
+                                              3) < 0 ||
+                   wpa_driver_roboswitch_read(drv, ROBO_ARLCTRL_PAGE,
+                                              ROBO_ARLCTRL_VEC_2, &ports_read,
+                                              1) < 0)
+                       return -1;
                /* or multiport address 2 */
                if (os_memcmp(addr_read, addr_be16, 6) == 0 &&
                    ports_read == ports) {