Check os_snprintf() result more consistently - maximum length
authorJouni Malinen <j@w1.fi>
Sun, 7 Dec 2014 10:11:13 +0000 (12:11 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 8 Dec 2014 09:42:07 +0000 (11:42 +0200)
This adds verification of os_snprintf() result against the maximum
buffer length. These changes were done automatically with spatch
using the following semantic patch:

@@
expression E1,E2,E3;
statement S1;
@@

  E1 = os_snprintf(E2, E3, ...);
- if (\( E1 < 0 \| E1 <= 0 \))
+ if (os_snprintf_error(E3, E1))
(
  S1
|
{ ... }
)

Signed-off-by: Jouni Malinen <j@w1.fi>
src/drivers/driver_nl80211.c
wpa_supplicant/dbus/dbus_new_handlers.c
wpa_supplicant/dbus/dbus_old_handlers.c

index b8dd577..c5c33c8 100644 (file)
@@ -7972,7 +7972,7 @@ static int linux_write_system_file(const char *path, unsigned int val)
        int fd, len;
 
        len = os_snprintf(buf, sizeof(buf), "%u\n", val);
-       if (len < 0)
+       if (os_snprintf_error(sizeof(buf), len))
                return -1;
 
        fd = open(path, O_WRONLY);
index eefc15d..6cf95d2 100644 (file)
@@ -247,7 +247,7 @@ dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
 
                        ret = os_snprintf(value, size, "%u",
                                          entry.uint32_value);
-                       if (ret <= 0)
+                       if (os_snprintf_error(size, ret))
                                goto error;
                } else if (entry.type == DBUS_TYPE_INT32) {
                        value = os_zalloc(size);
@@ -256,7 +256,7 @@ dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
 
                        ret = os_snprintf(value, size, "%d",
                                          entry.int32_value);
-                       if (ret <= 0)
+                       if (os_snprintf_error(size, ret))
                                goto error;
                } else
                        goto error;
index 048158f..5f54cf1 100644 (file)
@@ -981,7 +981,7 @@ DBusMessage * wpas_dbus_iface_set_network(DBusMessage *message,
                                goto error;
                        ret = os_snprintf(value, size, "%u",
                                          entry.uint32_value);
-                       if (ret <= 0)
+                       if (os_snprintf_error(size, ret))
                                goto error;
                } else if (entry.type == DBUS_TYPE_INT32) {
                        value = os_zalloc(size);
@@ -989,7 +989,7 @@ DBusMessage * wpas_dbus_iface_set_network(DBusMessage *message,
                                goto error;
                        ret = os_snprintf(value, size, "%d",
                                          entry.int32_value);
-                       if (ret <= 0)
+                       if (os_snprintf_error(size, ret))
                                goto error;
                } else
                        goto error;