From 7d3517f60691a0d7d82aa77529a4b338c295c4fb Mon Sep 17 00:00:00 2001
From: "daniil.frolov" <daniil.frolov@demlabs.net>
Date: Thu, 16 Mar 2023 14:38:24 +0000
Subject: [PATCH] hotfix-8277

---
 modules/common/dap_chain_datum_token.c | 10 ++++++++--
 modules/net/dap_chain_node_cli_cmd.c   |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c
index e19c8c00bf..b6f4e5fdad 100644
--- a/modules/common/dap_chain_datum_token.c
+++ b/modules/common/dap_chain_datum_token.c
@@ -76,12 +76,12 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
     dap_chain_datum_token_t *l_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, l_token_size);
     memcpy(l_token->ticker, l_token_old->ticker, sizeof(l_token_old->ticker));
     memcpy(l_token->data_n_tsd, l_token_old->data_n_tsd, l_token_data_n_tsd_size);
-    *a_token_size = l_token_size;
+//    *a_token_size = l_token_size;
     switch (((dap_chain_datum_token_t*)a_token_serial)->type) {
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_SIMPLE: {
         memcpy(l_token->ticker, l_token_old->ticker, sizeof(l_token_old->ticker));
 //        memcpy(l_token->data_n_tsd, l_token_old->data_n_tsd, l_token_tsd_size);
-
+        *a_token_size = l_token_size;
         l_token->type           = DAP_CHAIN_DATUM_TOKEN_DECL;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -93,6 +93,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_DECL: {
+        *a_token_size = l_token_size;
         l_token->type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -105,6 +106,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_UPDATE: {
+        *a_token_size = l_token_size;
         l_token->type = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -117,6 +119,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_NATIVE_DECL: {
+        *a_token_size = l_token_size;
         l_token->type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -129,6 +132,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_NATIVE_UPDATE: {
+        *a_token_size = l_token_size;
         l_token->type = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -141,6 +145,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PUBLIC: {
+        *a_token_size = l_token_size;
         l_token->type = DAP_CHAIN_DATUM_TOKEN_TYPE_DECL;
         l_token->total_supply   = l_token_old->total_supply;
         l_token->signs_valid    = l_token_old->signs_valid;
@@ -153,6 +158,7 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         return l_token;
     }
     default:
+        DAP_DELETE(l_token);
         return DAP_DUP_SIZE(a_token_serial, *a_token_size);
     };
 }
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 5706024370..3772664240 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -3484,6 +3484,7 @@ int com_token_decl(int a_argc, char ** a_argv, char ** a_str_reply)
             l_datum_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, sizeof(dap_chain_datum_token_t) + l_params->ext.tsd_total_size) ;
             l_datum_token->version = 2;
             l_datum_token->type = l_params->type;
+            l_datum_token->subtype = l_params->subtype;
             if (l_params->subtype == DAP_CHAIN_DATUM_TOKEN_SUBTYPE_PRIVATE) {
                 log_it(L_DEBUG,"Prepared TSD sections for private token on %zd total size", l_params->ext.tsd_total_size);
                 snprintf(l_datum_token->ticker, sizeof(l_datum_token->ticker), "%s", l_ticker);
-- 
GitLab