From bf09e1e1446587ab7af0b409df388e98775e822c Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Mon, 28 Sep 2020 13:57:13 +0700 Subject: [PATCH] [+] Add element size and allocation checks on load process --- modules/chain/dap_chain_cell.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index cb84cba7ab..5e229297e4 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -133,9 +133,20 @@ int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path) sizeof(l_element_size) ){ if ( l_element_size > 0 ){ dap_chain_atom_ptr_t * l_element = DAP_NEW_Z_SIZE (dap_chain_atom_ptr_t, l_element_size ); - if ( fread( l_element,1,l_element_size,l_cell->file_storage ) == l_element_size ) { - a_chain->callback_atom_add (a_chain, l_element, l_element_size); + if ( l_element){ + size_t l_read_bytes = fread( l_element,1,l_element_size,l_cell->file_storage ); + if ( l_read_bytes == l_element_size ) { + a_chain->callback_atom_add (a_chain, l_element, l_element_size); + }else{ + log_it (L_ERROR, "Can't read %zd bytes (processed only %zd), stop cell load process", l_element_size, + l_read_bytes); + break; + } + }else{ + log_it (L_ERROR, "Can't allocate %zd bytes, stop cell load process", l_element_size); + break; } + } else { log_it (L_ERROR, "Zero element size, file is corrupted"); break; -- GitLab