gatt: proxy_property_changed: check for NULL iterator
authorChristian Eggers <ceggers@arri.de>
Fri, 23 Sep 2022 14:58:13 +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
src/gatt-database.c::properties_changed():
...
   proxy->prop_func(..., ..., iter=NULL, ...)
   +--client/gatt.c::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/gatt-database.c

index 465d279..6982d2d 100644 (file)
@@ -3505,17 +3505,19 @@ static void property_changed_cb(GDBusProxy *proxy, const char *name,
        if (strcmp(name, "Value"))
                return;
 
-       if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_ARRAY) {
-               DBG("Malformed \"Value\" property received");
-               return;
-       }
+       if (iter) {
+               if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_ARRAY) {
+                       DBG("Malformed \"Value\" property received");
+                       return;
+               }
 
-       dbus_message_iter_recurse(iter, &array);
-       dbus_message_iter_get_fixed_array(&array, &value, &len);
+               dbus_message_iter_recurse(iter, &array);
+               dbus_message_iter_get_fixed_array(&array, &value, &len);
 
-       if (len < 0) {
-               DBG("Malformed \"Value\" property received");
-               return;
+               if (len < 0) {
+                       DBG("Malformed \"Value\" property received");
+                       return;
+               }
        }
 
        /* Truncate the value if it's too large */