diff --git a/CMakeLists.txt b/CMakeLists.txt index f0169dbf95982df53e8049d55b1b6018082ad593..1773cbe222a125b82160985758fad3cf8b814fea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 2.8) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.6-63") +set(CELLFRAME_SDK_NATIVE_VERSION "2.6-64") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") diff --git a/dap-sdk/core/src/dap_list.c b/dap-sdk/core/src/dap_list.c index a8046101187a758f192fcb36b8e7ed5586c75cfb..5942f399db3cee0277184b8c36625898aa03d871 100755 --- a/dap-sdk/core/src/dap_list.c +++ b/dap-sdk/core/src/dap_list.c @@ -3,7 +3,6 @@ */ #include <stddef.h> - #include "dap_common.h" #include "dap_strfuncs.h" #include "dap_list.h" @@ -105,6 +104,8 @@ dap_list_t * dap_list_append(dap_list_t *list, void* data) dap_list_t *last; new_list = dap_list_alloc(); + if( !new_list) // Out of memory + return list; new_list->data = data; new_list->next = NULL; diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c index aa42b899ad6f2a7825a52282bbd7b491f867ba51..2aa777ee3a50f13fded89a2cc728bb4cdf26f66f 100644 --- a/dap-sdk/net/client/dap_client.c +++ b/dap-sdk/net/client/dap_client.c @@ -317,7 +317,7 @@ void dap_client_go_stage(dap_client_t * a_client, dap_client_stage_t a_stage_tar assert(l_client_pvt); - struct go_stage_arg *l_stage_arg = DAP_NEW_Z(struct go_stage_arg); + struct go_stage_arg *l_stage_arg = DAP_NEW_Z(struct go_stage_arg); if (! l_stage_arg) return; l_stage_arg->stage_end_callback = a_stage_end_callback; l_stage_arg->stage_target = a_stage_target; l_stage_arg->client_pvt = l_client_pvt; @@ -334,7 +334,7 @@ void dap_client_delete_mt(dap_client_t * a_client) dap_client_pvt_t * l_client_pvt = DAP_CLIENT_PVT(a_client); assert(l_client_pvt); - struct go_stage_arg *l_stage_arg = DAP_NEW(struct go_stage_arg); + struct go_stage_arg *l_stage_arg = DAP_NEW(struct go_stage_arg); if (! l_stage_arg) return; l_stage_arg->stage_end_callback = s_stage_done_delete ; l_stage_arg->stage_target = STAGE_BEGIN ; l_stage_arg->client_pvt = l_client_pvt; diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c index d9e9d8022c27638e2019f94b81438794b6b49115..25122673d17a6df5a1615d169b240e574749c3f8 100644 --- a/dap-sdk/net/core/dap_events_socket.c +++ b/dap-sdk/net/core/dap_events_socket.c @@ -528,7 +528,7 @@ int dap_events_socket_queue_proc_input_unsafe(dap_events_socket_t * a_esocket) */ dap_events_socket_t * s_create_type_event(dap_worker_t * a_w, dap_events_socket_callback_event_t a_callback) { - dap_events_socket_t * l_es = DAP_NEW_Z(dap_events_socket_t); + dap_events_socket_t * l_es = DAP_NEW_Z(dap_events_socket_t); if (!l_es) return NULL; l_es->type = DESCRIPTOR_TYPE_EVENT; if (a_w){ l_es->events = a_w->events; @@ -718,7 +718,7 @@ void *dap_events_socket_buf_thread(void *arg) dap_events_socket_queue_ptr_send(l_item->es, l_item->arg); break; } - // l_count++; + l_count++; } if(l_res != 0) log_it(L_WARNING, "Lost data bulk in events socket buf thread"); @@ -729,7 +729,7 @@ void *dap_events_socket_buf_thread(void *arg) static void add_ptr_to_buf(dap_events_socket_t * a_es, void* a_arg) { - dap_events_socket_buf_item_t *l_item = DAP_NEW(dap_events_socket_buf_item_t); + dap_events_socket_buf_item_t *l_item = DAP_NEW(dap_events_socket_buf_item_t); if (!l_item) return; l_item->es = a_es; l_item->arg = a_arg; pthread_t l_thread; @@ -848,7 +848,7 @@ dap_events_socket_t * dap_events_socket_wrap2( dap_server_t *a_server, struct da assert( a_server ); //log_it( L_DEBUG,"Dap event socket wrapped around %d sock", a_sock ); - dap_events_socket_t * ret = DAP_NEW_Z( dap_events_socket_t ); + dap_events_socket_t * ret = DAP_NEW_Z( dap_events_socket_t ); if (!ret) return NULL; ret->socket = a_sock; ret->events = a_events; @@ -1105,7 +1105,7 @@ void dap_events_socket_remove_and_delete_mt(dap_worker_t * a_w, dap_events_sock */ void dap_events_socket_set_readable_mt(dap_worker_t * a_w, dap_events_socket_t * a_es,bool a_is_ready) { - dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); + dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (! l_msg) return; l_msg->esocket = a_es; if (a_is_ready) l_msg->flags_set = DAP_SOCK_READY_TO_READ; @@ -1126,7 +1126,7 @@ void dap_events_socket_set_readable_mt(dap_worker_t * a_w, dap_events_socket_t * */ void dap_events_socket_set_writable_mt(dap_worker_t * a_w, dap_events_socket_t * a_es,bool a_is_ready) { - dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); + dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return; l_msg->esocket = a_es; if (a_is_ready) l_msg->flags_set = DAP_SOCK_READY_TO_WRITE; @@ -1150,7 +1150,7 @@ void dap_events_socket_set_writable_mt(dap_worker_t * a_w, dap_events_socket_t * */ size_t dap_events_socket_write_inter(dap_events_socket_t * a_es_input, dap_events_socket_t *a_es, const void * a_data, size_t a_data_size) { - dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); + dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if( !l_msg) return 0; l_msg->esocket = a_es; l_msg->data = DAP_NEW_SIZE(void,a_data_size); l_msg->data_size = a_data_size; @@ -1212,7 +1212,7 @@ size_t dap_events_socket_write_f_inter(dap_events_socket_t * a_es_input, dap_eve */ size_t dap_events_socket_write_mt(dap_worker_t * a_w,dap_events_socket_t *a_es, const void * data, size_t l_data_size) { - dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); + dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return 0; l_msg->esocket = a_es; l_msg->data = DAP_NEW_SIZE(void,l_data_size); l_msg->data_size = l_data_size; diff --git a/dap-sdk/net/core/dap_net.c b/dap-sdk/net/core/dap_net.c index 8d4d744c3df68d37958a3a790cb9f5c910d114eb..b663dedd7ef6c86bdd0a8fd144d8cc05bd3d9526 100644 --- a/dap-sdk/net/core/dap_net.c +++ b/dap-sdk/net/core/dap_net.c @@ -45,6 +45,7 @@ int dap_net_resolve_host(const char *a_host, int ai_family, struct sockaddr *a_a } l_res = l_res->ai_next; } - freeaddrinfo(l_res); + if (l_res) + freeaddrinfo(l_res); return -1; } diff --git a/dap-sdk/net/core/dap_proc_queue.c b/dap-sdk/net/core/dap_proc_queue.c index ec98b6881c79a663ba4e06386c371159f42ea3bc..f932bc6c14dc46c9a66b629df1785375ed066eae 100644 --- a/dap-sdk/net/core/dap_proc_queue.c +++ b/dap-sdk/net/core/dap_proc_queue.c @@ -42,7 +42,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg); */ dap_proc_queue_t * dap_proc_queue_create(dap_proc_thread_t * a_thread) { - dap_proc_queue_t * l_queue = DAP_NEW_Z(dap_proc_queue_t); + dap_proc_queue_t * l_queue = DAP_NEW_Z(dap_proc_queue_t); if (!l_queue) return NULL; l_queue->proc_thread = a_thread; l_queue->esocket = dap_events_socket_create_type_queue_ptr_unsafe(NULL,s_queue_esocket_callback); l_queue->esocket->_inheritor = l_queue; @@ -55,7 +55,7 @@ dap_proc_queue_t * dap_proc_queue_create(dap_proc_thread_t * a_thread) */ void dap_proc_queue_delete(dap_proc_queue_t * a_queue) { - dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); + dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if(!l_msg) return; l_msg->signal_kill = true; dap_events_socket_queue_ptr_send( a_queue->esocket, l_msg ); } @@ -72,7 +72,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg) assert(l_msg); // We have callback to add in list if (l_msg->callback){ - dap_proc_queue_item_t * l_item = DAP_NEW_Z(dap_proc_queue_item_t); + dap_proc_queue_item_t * l_item = DAP_NEW_Z(dap_proc_queue_item_t); if (! l_item) return; l_item->callback = l_msg->callback; l_item->callback_arg = l_msg->callback_arg; @@ -105,7 +105,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg) */ void dap_proc_queue_add_callback(dap_worker_t * a_worker,dap_proc_queue_callback_t a_callback, void * a_callback_arg) { - dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); + dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if (!l_msg) return; l_msg->callback = a_callback; l_msg->callback_arg = a_callback_arg; dap_events_socket_queue_ptr_send( a_worker->proc_queue->esocket , l_msg ); @@ -119,7 +119,7 @@ void dap_proc_queue_add_callback(dap_worker_t * a_worker,dap_proc_queue_callback */ void dap_proc_queue_add_callback_inter( dap_events_socket_t * a_es_input, dap_proc_queue_callback_t a_callback, void * a_callback_arg) { - dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); + dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if (!l_msg) return; l_msg->callback = a_callback; l_msg->callback_arg = a_callback_arg; dap_events_socket_queue_ptr_send_to_input( a_es_input , l_msg ); diff --git a/dap-sdk/net/core/dap_proc_thread.c b/dap-sdk/net/core/dap_proc_thread.c index 8c49e0f7226130da2ce4e6f0e4ceaa9381f7f6e7..d675b3544ec1abc412fb6854715eb433bd129743 100644 --- a/dap-sdk/net/core/dap_proc_thread.c +++ b/dap-sdk/net/core/dap_proc_thread.c @@ -406,7 +406,7 @@ static void * s_proc_thread_function(void * a_arg) } } if (l_flag_write ){ - int l_errno; + int l_errno=0; if (l_cur->buf_out_size){ ssize_t l_bytes_sent = -1; switch (l_cur->type) { @@ -571,7 +571,7 @@ int dap_proc_thread_esocket_write_f_inter(dap_proc_thread_t * a_thread,dap_worke } dap_events_socket_t * l_es_io_input = a_thread->queue_io_input[a_worker->id]; - char * l_data = DAP_NEW_SIZE(char,l_data_size+1); + char * l_data = DAP_NEW_SIZE(char,l_data_size+1); if (!l_data) return -1; l_data_size = dap_vsprintf(l_data,a_format,ap_copy); va_end(ap_copy); diff --git a/dap-sdk/net/stream/session/dap_stream_session.c b/dap-sdk/net/stream/session/dap_stream_session.c index 5c1cb1a29a18aa997e723c3b7eb43a638bcfa1b2..5bf946de7de8cb01c878d3163619208e9cf4e39a 100644 --- a/dap-sdk/net/stream/session/dap_stream_session.c +++ b/dap-sdk/net/stream/session/dap_stream_session.c @@ -182,6 +182,7 @@ int dap_stream_session_close_mt(unsigned int id) dap_stream_session_t *l_s = dap_stream_session_id_unsafe( id ); if(!l_s) { log_it(L_WARNING, "Session id %u not found", id); + dap_stream_session_unlock(); return -1; } diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 48de72dd170b41d324bd8bd05d2c2ab9e29cdefa..4d42cf471ff412f255fca06bb8140479f3ba6fd8 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -1337,7 +1337,7 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t bool emission_flag = !l_is_first_transaction || (l_is_first_transaction && l_ledger_priv->check_token_emission); // find 'out' items dap_list_t *l_list_out = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_OUT_ALL, NULL); - uint64_t l_value; + uint64_t l_value=0; for (l_list_tmp = l_list_out; l_list_tmp; l_list_tmp = dap_list_next(l_list_tmp)) { dap_chain_tx_item_type_t l_type = *(uint8_t *)l_list_tmp->data; if (l_type == TX_ITEM_TYPE_OUT) diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index e6da3449bc047d72d5bd6c871dc35f2d14ef98b1..14f8cc211c397f2813c413b9acfb725f0ef351b9 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -345,6 +345,9 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg) dap_list_t *l_pkt_copy_list = l_ch_chain->pkt_copy_list; if (l_pkt_copy_list) { l_ch_chain->pkt_copy_list = l_ch_chain->pkt_copy_list->next; + if (l_ch_chain->pkt_copy_list ) + l_ch_chain->pkt_copy_list->prev = NULL; + dap_chain_pkt_copy_t *l_pkt_copy = (dap_chain_pkt_copy_t *)l_pkt_copy_list->data; size_t l_data_obj_count = 0; // deserialize data & Parse data from dap_db_log_pack() diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c index 7ccaa5f4c337e837575895051682fd9a6e89c926..ce7ccc6756b49b25102b5eee02ad593f4ab378ff 100644 --- a/modules/global-db/dap_chain_global_db.c +++ b/modules/global-db/dap_chain_global_db.c @@ -859,7 +859,7 @@ char* dap_chain_global_db_hash(const uint8_t *data, size_t data_size) void* dap_db_log_unpack(const void *a_data, size_t a_data_size, size_t *a_store_obj_count) { const dap_store_obj_pkt_t *l_pkt = (const dap_store_obj_pkt_t*) a_data; - if (! l_pkt) + if (! l_pkt || ! a_data_size) return NULL; if( (l_pkt->data_size+ sizeof(dap_store_obj_pkt_t)) != ((size_t) a_data_size )) return NULL;