From b442c746f1392333203b60f30a23fba0fb45d280 Mon Sep 17 00:00:00 2001
From: "aleksei.voronin" <aleksei.voronin@demlabs.net>
Date: Sat, 9 May 2020 12:36:16 +0300
Subject: [PATCH] [*] fixed error in assuming offsets in
 dap_chain_datum_token_tsd_get()

---
 modules/common/dap_chain_datum_token.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c
index a6a0de42a0..72febb8922 100644
--- a/modules/common/dap_chain_datum_token.c
+++ b/modules/common/dap_chain_datum_token.c
@@ -74,23 +74,19 @@ dap_chain_datum_token_tsd_t * dap_chain_datum_token_tsd_create(uint16_t a_type,
 dap_chain_datum_token_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t * a_token, size_t a_token_size)
 {
     // Check if token type could have tsd section
-    size_t l_hdr_size;
+    size_t l_hdr_size = sizeof(*a_token);
     size_t l_tsd_size;
+
+    if (l_hdr_size > a_token_size){
+        log_it(L_WARNING, "Token size smaller then header, corrupted data");
+        return NULL;
+    }
+
     switch( a_token->type){
         case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL:
-            l_hdr_size = sizeof (a_token->header_private_decl);
-            if (l_hdr_size> a_token_size){
-                log_it(L_WARNING, "Token size smaller then header, corrupted data");
-                return NULL;
-            }
             l_tsd_size = a_token->header_private_decl.tsd_total_size;
         break;
         case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE:
-            l_hdr_size = sizeof(a_token->header_private_update);
-            if (l_hdr_size> a_token_size){
-                log_it(L_WARNING, "Token size smaller then header, corrupted data");
-                return NULL;
-            }
             l_tsd_size = a_token->header_private_update.tsd_total_size;
         break;
         default: return NULL;
-- 
GitLab