battery: provided_battery_property_changed_cb: check iterator
authorChristian Eggers <ceggers@arri.de>
Fri, 23 Sep 2022 14:58:14 +0000 (16:58 +0200)
committerAyush Garg <ayush.garg@samsung.com>
Mon, 15 May 2023 09:25:55 +0000 (14:55 +0530)
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);
...

Signed-off-by: Manika Shrivastava <manika.sh@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
src/battery.c

index b3127d3..7d00958 100644 (file)
@@ -255,7 +255,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;
 
@@ -267,10 +267,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);