These were caught by static analysis
---
client/daemon.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/client/daemon.c b/client/daemon.c
index 509f8137..64bb41c9 100644
--- a/client/daemon.c
+++ b/client/daemon.c
@@ -57,24 +57,26 @@ static void get_info_callback(struct l_dbus_message *message, void
*user_data)
if (dbus_message_has_error(message))
return;
- if (!l_dbus_message_get_arguments(message, "a{sv}", &iter)) {
- l_error("Failed to parse GetInfo message");
- return;
- }
+ if (!l_dbus_message_get_arguments(message, "a{sv}", &iter))
+ goto parse_failed;
while (l_dbus_message_iter_next_entry(&iter, &key, &variant)) {
if (strcmp(key, "NetworkConfigurationEnabled"))
continue;
- l_dbus_message_iter_get_variant(&variant, "b",
- &netconfig_enabled);
+ if (!l_dbus_message_iter_get_variant(&variant, "b",
+ &netconfig_enabled))
+ goto parse_failed;
+
break;
}
if (!command_is_interactive_mode())
return;
- l_dbus_message_get_arguments(message, "a{sv}", &iter);
+ if (!l_dbus_message_get_arguments(message, "a{sv}", &iter))
+ goto parse_failed;
+
display("NetworkConfigurationEnabled: %s\n",
netconfig_enabled ? "enabled" : "disabled");
@@ -90,6 +92,12 @@ static void get_info_callback(struct l_dbus_message *message, void
*user_data)
display("%s: %s\n", key, sval);
}
}
+
+ return;
+
+parse_failed:
+ l_error("Failed to parse GetInfo message");
+ return;
}
static bool daemon_get_info(void)
--
2.34.1
Show replies by date
This was caught by static analysis
---
src/dpp-util.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/dpp-util.c b/src/dpp-util.c
index cd627e2a..8e7631d0 100644
--- a/src/dpp-util.c
+++ b/src/dpp-util.c
@@ -408,6 +408,8 @@ size_t dpp_append_wrapped_data(const void *ad0, size_t ad0_len,
va_arg(va, void*);
}
+ va_end(va);
+
if (to_len < attrs_len + 4 + 16)
return false;
@@ -415,8 +417,6 @@ size_t dpp_append_wrapped_data(const void *ad0, size_t ad0_len,
ptr = plaintext;
- va_end(va);
-
va_start(va, num_attrs);
/* Build up plaintext attributes */
--
2.34.1
Caught by static analysis
---
src/json.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/json.c b/src/json.c
index a2144a7c..4cd404ab 100644
--- a/src/json.c
+++ b/src/json.c
@@ -279,6 +279,8 @@ done:
return true;
error:
+ va_end(va);
+
l_queue_destroy(args, l_free);
return false;
}
--
2.34.1
Caught by static analysis
---
wired/ethdev.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/wired/ethdev.c b/wired/ethdev.c
index e000afae..db5a9ac9 100644
--- a/wired/ethdev.c
+++ b/wired/ethdev.c
@@ -238,10 +238,15 @@ static void rx_packet(struct ethdev *dev, const uint8_t *addr,
l_debug("Created new EAPoL session");
- l_queue_push_tail(dev->eapol_sessions, eapol);
-
eapol->cred = network_lookup_security("default");
- eap_load_settings(eapol->eap, eapol->cred, "EAP-");
+ if (!eapol->cred || !eap_load_settings(eapol->eap,
+ eapol->cred, "EAP-")) {
+ l_error("Failed to load EAP settings");
+ eapol_free(eapol);
+ return;
+ }
+
+ l_queue_push_tail(dev->eapol_sessions, eapol);
eap_set_key_material_func(eapol->eap, eap_key_material);
eap_set_event_func(eapol->eap, eap_event);
--
2.34.1
This could fail and was not being checked. It was minimally changed to
take the ifindex directly (this was the only thing needed from the ethdev)
which allows checking prior to initializing the ethdev.
---
wired/ethdev.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/wired/ethdev.c b/wired/ethdev.c
index db5a9ac9..e5353582 100644
--- a/wired/ethdev.c
+++ b/wired/ethdev.c
@@ -391,7 +391,7 @@ static char *read_devtype_from_uevent(const char *ifname)
return devtype;
}
-static int modify_membership(struct ethdev *dev, int optname)
+static int modify_membership(uint32_t index, int optname)
{
struct packet_mreq mreq;
int fd;
@@ -401,7 +401,7 @@ static int modify_membership(struct ethdev *dev, int optname)
return -1;
memset(&mreq, 0, sizeof(mreq));
- mreq.mr_ifindex = dev->index;
+ mreq.mr_ifindex = index;
mreq.mr_type = PACKET_MR_MULTICAST;
mreq.mr_alen = ETH_ALEN;
memcpy(mreq.mr_address, pae_group_addr, ETH_ALEN);
@@ -415,7 +415,8 @@ static void ethdev_free(void *data)
l_debug("Freeing device %s", dev->ifname);
- modify_membership(dev, PACKET_DROP_MEMBERSHIP);
+ if (modify_membership(dev->index, PACKET_DROP_MEMBERSHIP) < 0)
+ l_error("Failed to drop membership");
l_queue_destroy(dev->eapol_sessions, eapol_free);
@@ -521,6 +522,11 @@ static void newlink_notify(const struct ifinfomsg *ifi, int bytes)
}
}
+ if (modify_membership(index, PACKET_ADD_MEMBERSHIP) < 0) {
+ l_error("Failed to add membership");
+ return;
+ }
+
dev = l_new(struct ethdev, 1);
dev->index = index;
dev->active = active;
@@ -532,8 +538,6 @@ static void newlink_notify(const struct ifinfomsg *ifi, int bytes)
l_debug("Creating device %u", dev->index);
- modify_membership(dev, PACKET_ADD_MEMBERSHIP);
-
l_dbus_object_add_interface(dbus_app_get(), dev->path,
ADAPTER_INTERFACE, dev);
--
2.34.1
Caught by static analysis
---
wired/network.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/wired/network.c b/wired/network.c
index 64dcb4be..6ff0e708 100644
--- a/wired/network.c
+++ b/wired/network.c
@@ -133,7 +133,10 @@ struct l_settings *network_lookup_security(const char *network)
l_debug("Loading %s", path);
conf = l_settings_new();
- l_settings_load_from_file(conf, path);
+ if (!l_settings_load_from_file(conf, path)) {
+ l_settings_free(conf);
+ conf = NULL;
+ }
l_free(path);
--
2.34.1
Hi James,
On 3/18/22 11:44, James Prestwood wrote:
These were caught by static analysis
---
client/daemon.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
All applied, thanks.
Regards,
-Denis