diff mbox series

[BlueZ,v2,9/9] battery: provided_battery_property_changed_cb: check iterator

Message ID 20220923145814.26077-4-ceggers@arri.de (mailing list archive)
State Accepted
Commit 15895e401e1e29821b67bdc9d12d3bfa67333b35
Headers show
Series properties_changed: check for NULL iterator | expand

Commit Message

Christian Eggers Sept. 23, 2022, 2:58 p.m. UTC
The passed iterator can be NULL as in
gdbus/client.c::properties_changed():
...
   proxy->prop_func(..., ..., iter=NULL, ...)
   +--src/battery.c::provided_battery_property_changed_cb(, , iter, );
      +--dbus_message_iter_get_arg_type(iter);
...
---
 src/battery.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/src/battery.c b/src/battery.c
index 77fee22b6e61..88a53e80e890 100644
--- a/src/battery.c
+++ b/src/battery.c
@@ -252,7 +252,7 @@  static void provided_battery_property_changed_cb(GDBusProxy *proxy,
 						 DBusMessageIter *iter,
 						 void *user_data)
 {
-	uint8_t percentage;
+	uint8_t percentage = 0;
 	const char *export_path;
 	DBusMessageIter dev_iter;
 
@@ -264,10 +264,12 @@  static void provided_battery_property_changed_cb(GDBusProxy *proxy,
 	if (strcmp(name, "Percentage") != 0)
 		return;
 
-	if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_BYTE)
-		return;
+	if (iter) {
+		if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_BYTE)
+			return;
 
-	dbus_message_iter_get_basic(iter, &percentage);
+		dbus_message_iter_get_basic(iter, &percentage);
+	}
 
 	DBG("battery percentage changed on %s, percentage = %d",
 	    g_dbus_proxy_get_path(proxy), percentage);