From acf23246c507a077c545feaef9dfb0cb0aee1c55 Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Tue, 5 May 2020 05:34:07 +0700 Subject: [PATCH] [!] Fixed increadble bug with dap_list_t [*] Other fixes --- dap-sdk/core/src/dap_list.c | 8 ++-- dap-sdk/net/client/dap_client.c | 2 +- dap-sdk/net/core/dap_events.c | 2 +- .../http_server/http_client/dap_http_client.c | 2 +- modules/net/dap_chain_net.c | 2 +- modules/net/dap_chain_node_cli_cmd.c | 38 ++++++++++++++++++- 6 files changed, 44 insertions(+), 10 deletions(-) diff --git a/dap-sdk/core/src/dap_list.c b/dap-sdk/core/src/dap_list.c index 1d043eac17..4c6ee31c2b 100755 --- a/dap-sdk/core/src/dap_list.c +++ b/dap-sdk/core/src/dap_list.c @@ -15,13 +15,13 @@ * dap_list_alloc: * Returns: a pointer to the newly-allocated DapList element **/ -dap_list_t *dap_list_alloc(void) +dap_list_t *dap_list_alloc_no_z(void) { dap_list_t *list = DAP_NEW(dap_list_t); return list; } -dap_list_t *dap_list_alloc0(void) +dap_list_t *dap_list_alloc(void) { dap_list_t *list = DAP_NEW_Z(dap_list_t); return list; @@ -796,7 +796,7 @@ static dap_list_t* dap_list_insert_sorted_real(dap_list_t *list, void* data, dap if(!list) { - new_list = dap_list_alloc0(); + new_list = dap_list_alloc(); new_list->data = data; return new_list; } @@ -810,7 +810,7 @@ static dap_list_t* dap_list_insert_sorted_real(dap_list_t *list, void* data, dap cmp = ((dap_callback_compare_data_t) func)(data, tmp_list->data, user_data); } - new_list = dap_list_alloc0(); + new_list = dap_list_alloc(); new_list->data = data; if((!tmp_list->next) && (cmp > 0)) diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c index 14ed72dff2..fd7416b830 100644 --- a/dap-sdk/net/client/dap_client.c +++ b/dap-sdk/net/client/dap_client.c @@ -264,7 +264,7 @@ void dap_client_go_stage(dap_client_t * a_client, dap_client_stage_t a_stage_tar */ void m_stage_fsm_operator(dap_client_t * a_client, void * a_arg) { - (void *) a_arg; + UNUSED(a_arg); dap_client_pvt_t * l_client_internal = DAP_CLIENT_PVT(a_client); if(!l_client_internal){ log_it(L_ERROR, "FSM Op: l_client_internal is NULL!"); diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c index d6efd10913..936484554a 100644 --- a/dap-sdk/net/core/dap_events.c +++ b/dap-sdk/net/core/dap_events.c @@ -347,7 +347,7 @@ static void *thread_worker_function(void *arg) if(cur->type == DESCRIPTOR_TYPE_SOCKET) { bytes_read = recv(cur->socket, (char *) (cur->buf_in + cur->buf_in_size), sizeof(cur->buf_in) - cur->buf_in_size, 0); - }else if(cur->type = DESCRIPTOR_TYPE_FILE) { + }else if(cur->type == DESCRIPTOR_TYPE_FILE) { bytes_read = read(cur->socket, (char *) (cur->buf_in + cur->buf_in_size), sizeof(cur->buf_in) - cur->buf_in_size); } diff --git a/dap-sdk/net/server/http_server/http_client/dap_http_client.c b/dap-sdk/net/server/http_server/http_client/dap_http_client.c index e7944d411b..81cdd8cdfe 100644 --- a/dap-sdk/net/server/http_server/http_client/dap_http_client.c +++ b/dap-sdk/net/server/http_server/http_client/dap_http_client.c @@ -367,7 +367,7 @@ void dap_http_client_read( dap_client_remote_t *cl, void *arg ) char *query_string; - if( query_string = strchr(cl_ht->url_path, '?') ) { + if( (query_string = strchr(cl_ht->url_path, '?')) != NULL ) { size_t len_after = strlen( query_string + 1 ); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index afcc63f34c..357f3e6baa 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -1440,7 +1440,7 @@ int s_net_load(const char * a_net_name) log_it( L_DEBUG, "Resolve %s addr", l_seed_nodes_hostnames[i]); struct hostent *l_he; - if ( l_he = gethostbyname (l_seed_nodes_hostnames[i]) ){ + if ( (l_he = gethostbyname (l_seed_nodes_hostnames[i]) ) != NULL ){ struct in_addr **l_addr_list = (struct in_addr **) l_he->h_addr_list; for(int i = 0; l_addr_list[i] != NULL; i++ ) { log_it( L_NOTICE, "Resolved %s to %s (ipv4)", l_seed_nodes_hostnames[i] , diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 52e6d728d8..9bc9009b6f 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -2440,7 +2440,7 @@ int com_token_update(int argc, char ** argv, void *arg_func, char ** a_str_reply sizeof(l_datum_token_update->header_private), 0); size_t l_sign_size = dap_sign_get_size(l_sign); - l_datum_token_update = DAP_REALLOC(l_datum_token_update, sizeof(dap_chain_datum_token_t) + l_datum_data_offset + l_sign_size); + l_datum_token_update = DAP_REALLOC(l_datum_token_update, sizeof(dap_chain_datum_token_t) +l_tsd_total_size + l_datum_data_offset + l_sign_size); memcpy(l_datum_token_update->data_n_tsd + l_datum_data_offset, l_sign, l_sign_size); l_datum_data_offset += l_sign_size; DAP_DELETE(l_sign); @@ -2681,11 +2681,13 @@ int com_token_decl(int argc, char ** argv, void *arg_func, char ** a_str_reply) if(l_certs_count > l_signs_total) l_certs_count = l_signs_total; + log_it(L_DEBUG,"Prepeared TSD sections on %zd total size", l_tsd_total_size); // Create new datum token l_datum_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, sizeof(dap_chain_datum_token_t)+l_tsd_total_size ) ; l_datum_token->type = DAP_CHAIN_DATUM_TOKEN_PRIVATE_DECL; dap_snprintf(l_datum_token->ticker, sizeof(l_datum_token->ticker), "%s", l_ticker); l_datum_token->header_private_decl.flags = l_flags; + log_it(L_DEBUG,"Token declaration '%s' initialized", l_datum_token->ticker); // Sign header with all certificates in the list and add signs to the end of ticker declaration // Important: @@ -2695,15 +2697,47 @@ int com_token_decl(int argc, char ** argv, void *arg_func, char ** a_str_reply) sizeof(l_datum_token->header_private), 0); size_t l_sign_size = dap_sign_get_size(l_sign); - l_datum_token = DAP_REALLOC(l_datum_token, sizeof(dap_chain_datum_token_t) + l_datum_data_offset + l_sign_size); + l_datum_token = DAP_REALLOC(l_datum_token, sizeof(dap_chain_datum_token_t) +l_tsd_total_size + l_datum_data_offset + l_sign_size); memcpy(l_datum_token->data_n_tsd + l_datum_data_offset, l_sign, l_sign_size); l_datum_data_offset += l_sign_size; DAP_DELETE(l_sign); + log_it(L_DEBUG,"<-- Signed with '%s'", l_certs[i]->name); } // Add TSD sections in the end for ( dap_list_t* l_iter=dap_list_first(l_tsd_list); l_iter; l_iter=l_iter->next){ dap_chain_datum_token_tsd_t * l_tsd = (dap_chain_datum_token_tsd_t *) l_iter->data; + if (l_tsd == NULL){ + log_it(L_ERROR, "NULL tsd in list!"); + continue; + } + switch (l_tsd->type){ + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: + log_it(L_DEBUG,"== TOTAL_SUPPLY: %llf.20", + dap_chain_balance_to_coins( dap_chain_datum_token_tsd_get_scalar(l_tsd,uint128_t) ) ); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_VALID: + log_it(L_DEBUG,"== TOTAL_SIGNS_VALID: %u", + dap_chain_datum_token_tsd_get_scalar(l_tsd,uint16_t) ); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD: + log_it(L_DEBUG,"== TX_SENDER_ALLOWED_ADD: %s", + dap_chain_datum_token_tsd_get_string_const(l_tsd) ); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_ADD: + log_it(L_DEBUG,"== TX_SENDER_BLOCKED_ADD: %s", + dap_chain_datum_token_tsd_get_string_const(l_tsd) ); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD: + log_it(L_DEBUG,"== TX_RECEIVER_ALLOWED_ADD: %s", + dap_chain_datum_token_tsd_get_string_const(l_tsd) ); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD: + log_it(L_DEBUG,"== TX_RECEIVER_BLOCKED_ADD: %s", + dap_chain_datum_token_tsd_get_string_const(l_tsd) ); + break; + default: log_it(L_DEBUG, "== 0x%04X: binary data %zd size ",l_tsd->type, l_tsd->size ); + } size_t l_tsd_size = dap_chain_datum_token_tsd_size( l_tsd); memcpy(l_datum_token->data_n_tsd + l_datum_data_offset, l_tsd, l_tsd_size); l_datum_data_offset += l_tsd_size; -- GitLab