mesh: Fix app payload decryption for virtual labels 38/228938/1
authorInga Stotland <inga.stotland@intel.com>
Tue, 18 Feb 2020 19:30:10 +0000 (11:30 -0800)
committerAnupam Roy <anupam.r@samsung.com>
Thu, 26 Mar 2020 10:27:14 +0000 (15:57 +0530)
This fixes a bug when a virtual label and its size hasn't been passed
to a decryption function: instead of always using NULL pointer for
label and 0 for lable size, use actual virtual label info if decrypting
a payload addressed to a virtual destination.

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

index 072972f..4e58562 100644 (file)
@@ -444,8 +444,8 @@ static int app_packet_decrypt(struct mesh_net *net, const uint8_t *data,
                        continue;
 
                if (old_key && old_key_aid == key_aid) {
-                       decrypted = mesh_crypto_payload_decrypt(NULL, 0, data,
-                                               size, szmict, src, dst, key_aid,
+                       decrypted = mesh_crypto_payload_decrypt(virt, virt_size,
+                                       data, size, szmict, src, dst, key_aid,
                                                seq, iv_idx, out, old_key);
 
                        if (decrypted) {
@@ -457,8 +457,8 @@ static int app_packet_decrypt(struct mesh_net *net, const uint8_t *data,
                }
 
                if (new_key && new_key_aid == key_aid) {
-                       decrypted = mesh_crypto_payload_decrypt(NULL, 0, data,
-                                               size, szmict, src, dst, key_aid,
+                       decrypted = mesh_crypto_payload_decrypt(virt, virt_size,
+                                       data, size, szmict, src, dst, key_aid,
                                                seq, iv_idx, out, new_key);
 
                        if (decrypted) {