From 7c4dbfa5483b3eb6c90e84b32a45e87590c3be5d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?=
 <alexander.lysikov@demlabs.net>
Date: Thu, 13 Jun 2019 23:30:36 +0500
Subject: [PATCH] fixed memory corruption in
 dap_chain_ledger_addr_get_token_ticker_all()

---
 dap_chain_ledger.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dap_chain_ledger.c b/dap_chain_ledger.c
index 7201976..a9d3722 100755
--- a/dap_chain_ledger.c
+++ b/dap_chain_ledger.c
@@ -404,7 +404,7 @@ void dap_chain_ledger_addr_get_token_ticker_all(dap_ledger_t *a_ledger, dap_chai
             DAP_DELETE(l_tx_hash);
         }
         l_tickers_size = l_tickers_pos + 1;
-        l_tickers = DAP_REALLOC(l_tickers, l_tickers_size);
+        l_tickers = DAP_REALLOC(l_tickers, l_tickers_size * sizeof(char*));
     }
     *a_tickers = l_tickers;
     *a_tickers_size = l_tickers_pos;
@@ -1071,7 +1071,7 @@ uint64_t dap_chain_ledger_calc_balance(dap_ledger_t *a_ledger, const dap_chain_a
     dap_ledger_wallet_balance_t *l_balance_item = NULL ,* l_balance_item_tmp = NULL;
     dap_ledger_wallet_balance_key_t l_balance_key = {{0}};
     memcpy( &l_balance_key.addr, &a_addr, sizeof(a_addr));
-    snprintf( l_balance_key.ticker,sizeof (l_balance_key.ticker),"%s",a_token_ticker);
+    snprintf(l_balance_key.ticker, sizeof(l_balance_key.ticker) - 1, "%s", a_token_ticker ? a_token_ticker : "???");
     HASH_FIND(hh,PVT(a_ledger)->balance_accounts,&l_balance_key,sizeof(dap_ledger_wallet_balance_key_t),l_balance_item);
     if (l_balance_item) {
         log_it (L_DEBUG,"Found address in cache with balance %llu", l_balance_item->balance);
-- 
GitLab