mesh: Correctly initialize node's vendor models
authorInga Stotland <inga.stotland@intel.com>
Thu, 21 Mar 2019 07:32:40 +0000 (00:32 -0700)
committerAnupam Roy <anupam.r@samsung.com>
Tue, 17 Dec 2019 14:18:35 +0000 (19:48 +0530)
This fixes vendor model initialization based on node properties
collected during Join() method call.

Change-Id: Ie7fc4c004717a86086db323d86e1d113a20c03b3
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
mesh/node.c

index 761a67a..999d3b8 100644 (file)
@@ -1177,17 +1177,20 @@ static void add_model_from_properties(struct node_element *ele,
 static void add_vendor_model_from_properties(struct node_element *ele,
                                        struct l_dbus_message_iter *property)
 {
-       struct {
-               uint16_t v;
-               uint16_t m;
-       } id_pair;
+       struct l_dbus_message_iter ids;
+       uint16_t v;
+       uint16_t m;
 
        if (!ele->models)
                ele->models = l_queue_new();
 
-       while (l_dbus_message_iter_next_entry(property, &id_pair)) {
+       if (!l_dbus_message_iter_get_variant(property, "a(qq)", &ids))
+               return;
+
+       while (l_dbus_message_iter_next_entry(&ids, &v, &m)) {
                struct mesh_model *mod;
-               mod = mesh_model_vendor_new(ele->idx, id_pair.v, id_pair.m);
+
+               mod = mesh_model_vendor_new(ele->idx, v, m);
                l_queue_push_tail(ele->models, mod);
        }
 }