mesh: On node attach, verify element/model composition only 24/234224/1
authorInga Stotland <inga.stotland@intel.com>
Sat, 9 May 2020 00:00:21 +0000 (17:00 -0700)
committerAbhay Agarwal <ay.agarwal@samsung.com>
Fri, 22 May 2020 04:23:43 +0000 (09:53 +0530)
When attaching an existing node, verify only the "elements" part
of device composition, i.e., skip verification of CID/PID/VID, CRPL
and features.

Change-Id: I0cc22ce1fe0128bdbb93abe2811ef5558807b2c4
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
mesh/node.c

index 0762033..179552e 100644 (file)
@@ -1378,7 +1378,7 @@ static bool check_req_node(struct managed_obj_request *req)
 {
        uint8_t node_comp[MAX_MSG_LEN - 2];
        uint8_t attach_comp[MAX_MSG_LEN - 2];
-
+       uint16_t offset = 10;
        uint16_t node_len = node_generate_comp(req->node, node_comp,
                                                        sizeof(node_comp));
 
@@ -1389,12 +1389,10 @@ static bool check_req_node(struct managed_obj_request *req)
                uint16_t attach_len = node_generate_comp(req->attach,
                                        attach_comp, sizeof(attach_comp));
 
-               /* Ignore feature bits in Composition Compare */
-               node_comp[8] = 0;
-               attach_comp[8] = 0;
-
+               /* Verify only element/models composition */
                if (node_len != attach_len ||
-                               memcmp(node_comp, attach_comp, node_len)) {
+                               memcmp(&node_comp[offset], &attach_comp[offset],
+                                                       node_len - offset)) {
                        l_debug("Failed to verify app's composition data");
                        return false;
                }