From bfd62cc4293b448feba73acd6976d973f3b4150a Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Thu, 26 Nov 2020 22:53:06 +0700 Subject: [PATCH] [*] Lot of small fixes --- CMakeLists.txt | 2 +- dap-sdk/core/src/dap_list.c | 1 - dap-sdk/core/src/rpmalloc/rpmalloc.c | 3 +- .../core/src/unix/linux/dap_network_monitor.c | 2 +- dap-sdk/crypto/src/dap_enc_base58.c | 1 + dap-sdk/crypto/src/dap_enc_bliss.c | 2 +- dap-sdk/crypto/src/dap_enc_key.c | 3 +- dap-sdk/crypto/src/dap_sign.c | 31 +++++++++++-------- dap-sdk/net/client/dap_client.c | 2 +- dap-sdk/net/client/dap_client_pvt.c | 2 +- dap-sdk/net/core/dap_events_socket.c | 5 +++ modules/net/dap_chain_net.c | 20 +++++++----- 12 files changed, 45 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1eee15b42..d2eb321b21 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-58") +set(CELLFRAME_SDK_NATIVE_VERSION "2.6-59") 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 43e404a4c3..d5d1cb033f 100755 --- a/dap-sdk/core/src/dap_list.c +++ b/dap-sdk/core/src/dap_list.c @@ -351,7 +351,6 @@ dap_list_t *dap_list_remove(dap_list_t *list, const void * data) { list = _dap_list_remove_link(list, tmp); dap_list_free1(tmp); - break; } } diff --git a/dap-sdk/core/src/rpmalloc/rpmalloc.c b/dap-sdk/core/src/rpmalloc/rpmalloc.c index 8b1bbcdfa5..cab7ed149d 100644 --- a/dap-sdk/core/src/rpmalloc/rpmalloc.c +++ b/dap-sdk/core/src/rpmalloc/rpmalloc.c @@ -2230,7 +2230,8 @@ rpaligned_alloc(size_t alignment, size_t size) { ptr = (void*)(((uintptr_t)ptr & ~(uintptr_t)align_mask) + alignment); //Mark as having aligned blocks span_t* span = (span_t*)((uintptr_t)ptr & _memory_span_mask); - span->flags |= SPAN_FLAG_ALIGNED_BLOCKS; + if (span) + span->flags |= SPAN_FLAG_ALIGNED_BLOCKS; return ptr; } diff --git a/dap-sdk/core/src/unix/linux/dap_network_monitor.c b/dap-sdk/core/src/unix/linux/dap_network_monitor.c index 3341ad089f..27b2aa373e 100755 --- a/dap-sdk/core/src/unix/linux/dap_network_monitor.c +++ b/dap-sdk/core/src/unix/linux/dap_network_monitor.c @@ -189,7 +189,7 @@ static void _link_msg_handler(struct nlmsghdr *nlh, static void clear_results(dap_network_notification_t* cb_result) { - bzero(cb_result, sizeof (dap_network_notification_t)); + memset(cb_result, 0,sizeof (dap_network_notification_t)); cb_result->route.destination_address = (uint64_t) -1; cb_result->route.gateway_address = (uint64_t) -1; } diff --git a/dap-sdk/crypto/src/dap_enc_base58.c b/dap-sdk/crypto/src/dap_enc_base58.c index fba7d9a633..84282f26f9 100755 --- a/dap-sdk/crypto/src/dap_enc_base58.c +++ b/dap-sdk/crypto/src/dap_enc_base58.c @@ -98,6 +98,7 @@ size_t dap_enc_base58_decode(const char * a_in, void * a_out) } unsigned char l_out_u80[l_out_size_max]; + memset(l_out_u80,0,l_out_size_max); unsigned char *l_out_u8 = l_out_u80; j = 0; switch (bytesleft) { diff --git a/dap-sdk/crypto/src/dap_enc_bliss.c b/dap-sdk/crypto/src/dap_enc_bliss.c index ce87eabdc2..e75d0f8d8d 100755 --- a/dap-sdk/crypto/src/dap_enc_bliss.c +++ b/dap-sdk/crypto/src/dap_enc_bliss.c @@ -199,7 +199,7 @@ bliss_signature_t* dap_enc_sig_bliss_read_signature(const uint8_t *a_buf, size_t l_sign->kind = kind; l_sign->z1 = DAP_NEW_SIZE(int32_t, p.n * sizeof(int32_t)); l_sign->z2 = DAP_NEW_SIZE(int32_t, p.n * sizeof(int32_t)); - l_sign->c = DAP_NEW_SIZE(uint32_t, p.kappa * sizeof(int32_t)); + l_sign->c = DAP_NEW_SIZE(unsigned int, p.kappa * sizeof(unsigned int)); size_t l_shift_mem = sizeof(size_t) + sizeof(bliss_kind_t); memcpy(l_sign->z1, a_buf + l_shift_mem, p.n * sizeof(int32_t)); l_shift_mem += p.n * sizeof(int32_t); diff --git a/dap-sdk/crypto/src/dap_enc_key.c b/dap-sdk/crypto/src/dap_enc_key.c index 4c82fd3a69..a04f827079 100755 --- a/dap-sdk/crypto/src/dap_enc_key.c +++ b/dap-sdk/crypto/src/dap_enc_key.c @@ -709,7 +709,8 @@ dap_enc_key_t *dap_enc_key_new(dap_enc_key_type_t a_key_type) s_callbacks[a_key_type].new_callback(ret); } } - ret->type = a_key_type; + if(ret) + ret->type = a_key_type; return ret; } diff --git a/dap-sdk/crypto/src/dap_sign.c b/dap-sdk/crypto/src/dap_sign.c index 4b390b5258..fd3c76f990 100755 --- a/dap-sdk/crypto/src/dap_sign.c +++ b/dap-sdk/crypto/src/dap_sign.c @@ -500,27 +500,32 @@ dap_multi_sign_t *dap_multi_sign_deserialize(dap_sign_type_enum_t a_type, uint8_ l_mem_shift++; memcpy(&l_sign->sign_count, &a_sign[l_mem_shift], 1); l_mem_shift++; - l_sign->key_seq = DAP_NEW_Z_SIZE(dap_multi_sign_keys_t, l_sign->sign_count * sizeof(dap_multi_sign_keys_t)); + if(l_sign->sign_count) + l_sign->key_seq = DAP_NEW_Z_SIZE(dap_multi_sign_keys_t, l_sign->sign_count * sizeof(dap_multi_sign_keys_t)); for (int i = 0; i < l_sign->sign_count; i++) { memcpy(&l_sign->key_seq[i].num, &a_sign[l_mem_shift], 1); l_mem_shift++; memcpy(&l_sign->key_seq[i].type, &a_sign[l_mem_shift], sizeof(dap_sign_type_t)); l_mem_shift += sizeof(dap_sign_type_t); } - l_sign->meta = DAP_NEW_Z_SIZE(dap_multi_sign_meta_t, l_sign->sign_count * sizeof(dap_multi_sign_meta_t)); size_t l_pkeys_size = 0, l_signes_size = 0; - for (int i = 0; i < l_sign->sign_count; i++) { - memcpy(&l_sign->meta[i].pkey_size, &a_sign[l_mem_shift], sizeof(uint32_t)); - l_mem_shift += sizeof(uint32_t); - l_pkeys_size += l_sign->meta[i].pkey_size; - memcpy(&l_sign->meta[i].sign_size, &a_sign[l_mem_shift], sizeof(uint32_t)); - l_mem_shift += sizeof(uint32_t); - l_signes_size += l_sign->meta[i].sign_size; + if(l_sign->sign_count){ + l_sign->meta = DAP_NEW_Z_SIZE(dap_multi_sign_meta_t, l_sign->sign_count * sizeof(dap_multi_sign_meta_t)); + for (int i = 0; i < l_sign->sign_count; i++) { + memcpy(&l_sign->meta[i].pkey_size, &a_sign[l_mem_shift], sizeof(uint32_t)); + l_mem_shift += sizeof(uint32_t); + l_pkeys_size += l_sign->meta[i].pkey_size; + memcpy(&l_sign->meta[i].sign_size, &a_sign[l_mem_shift], sizeof(uint32_t)); + l_mem_shift += sizeof(uint32_t); + l_signes_size += l_sign->meta[i].sign_size; + } } - l_sign->key_hashes = DAP_NEW_Z_SIZE(dap_chain_hash_fast_t, l_sign->total_count * sizeof(dap_chain_hash_fast_t)); - for (int i = 0; i < l_sign->total_count; i++) { - memcpy(&l_sign->key_hashes[i], &a_sign[l_mem_shift], sizeof(dap_chain_hash_fast_t)); - l_mem_shift += sizeof(dap_chain_hash_fast_t); + if(l_sign->total_count){ + l_sign->key_hashes = DAP_NEW_Z_SIZE(dap_chain_hash_fast_t, l_sign->total_count * sizeof(dap_chain_hash_fast_t)); + for (int i = 0; i < l_sign->total_count; i++) { + memcpy(&l_sign->key_hashes[i], &a_sign[l_mem_shift], sizeof(dap_chain_hash_fast_t)); + l_mem_shift += sizeof(dap_chain_hash_fast_t); + } } uint32_t l_data_shift = 0, l_data_size = 0; l_sign->pub_keys = DAP_NEW_Z_SIZE(uint8_t, l_pkeys_size); diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c index f70f5132dc..aa42b899ad 100644 --- a/dap-sdk/net/client/dap_client.c +++ b/dap-sdk/net/client/dap_client.c @@ -294,7 +294,7 @@ static void s_go_stage_on_client_worker_unsafe(dap_worker_t * a_worker,void * a_ } l_client_pvt->refs_count--; if ( l_client_pvt->is_to_delete ) - dap_client_delete_unsafe(l_client_pvt->client); + dap_client_delete_unsafe(l_client); } /** diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index 8cad69894e..48fb9ad870 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -779,7 +779,7 @@ static void s_request_response(void * a_response, size_t a_response_size, void * static void s_enc_init_response(dap_client_t * a_client, void * a_response, size_t a_response_size) { dap_client_pvt_t * l_client_pvt = a_client ? DAP_CLIENT_PVT(a_client) : NULL; - if (!dap_client_pvt_check(l_client_pvt) ){ + if (! l_client_pvt || !dap_client_pvt_check(l_client_pvt) ){ // Response received after client_pvt was deleted return; } diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c index 3e40b1524b..d9e9d8022c 100644 --- a/dap-sdk/net/core/dap_events_socket.c +++ b/dap-sdk/net/core/dap_events_socket.c @@ -361,6 +361,10 @@ dap_events_socket_t * dap_events_socket_queue_ptr_create_input(dap_events_socket dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_socket_callback_queue_ptr_t a_callback) { dap_events_socket_t * l_es = DAP_NEW_Z(dap_events_socket_t); + if(!l_es){ + log_it(L_ERROR,"Can't allocate esocket!"); + return NULL; + } l_es->type = DESCRIPTOR_TYPE_QUEUE; l_es->flags = DAP_SOCK_QUEUE_PTR; if (a_w){ @@ -429,6 +433,7 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc DAP_DELETE(l_es); l_es = NULL; log_it(L_CRITICAL,"Can't create mqueue descriptor %s: \"%s\" code %d",l_mq_name, l_errbuf, l_errno); + return NULL; }else{ l_es->mqd_id = l_mq_last_number; l_mq_last_number++; diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 96c92cc0cb..558b7216f6 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -1799,13 +1799,16 @@ void dap_chain_net_deinit() dap_chain_net_t **dap_chain_net_list(uint16_t *a_size) { *a_size = HASH_COUNT(s_net_items); - dap_chain_net_t **l_net_list = DAP_NEW_SIZE(dap_chain_net_t *, (*a_size) * sizeof(dap_chain_net_t *)); - dap_chain_net_item_t *l_current_item, *l_tmp; - int i = 0; - HASH_ITER(hh, s_net_items, l_current_item, l_tmp) { - l_net_list[i++] = l_current_item->chain_net; - } - return l_net_list; + if(*a_size){ + dap_chain_net_t **l_net_list = DAP_NEW_SIZE(dap_chain_net_t *, (*a_size) * sizeof(dap_chain_net_t *)); + dap_chain_net_item_t *l_current_item, *l_tmp; + int i = 0; + HASH_ITER(hh, s_net_items, l_current_item, l_tmp) { + l_net_list[i++] = l_current_item->chain_net; + } + return l_net_list; + }else + return NULL; } /** @@ -2609,11 +2612,12 @@ static uint8_t *dap_chain_net_set_acl(dap_chain_hash_fast_t *a_pkey_hash) { uint16_t l_net_count; dap_chain_net_t **l_net_list = dap_chain_net_list(&l_net_count); - if (l_net_count) { + if (l_net_count && l_net_list) { uint8_t *l_ret = DAP_NEW_SIZE(uint8_t, l_net_count); for (uint16_t i = 0; i < l_net_count; i++) { l_ret[i] = s_net_check_acl(l_net_list[i], a_pkey_hash); } + DAP_DELETE(l_net_list); return l_ret; } return NULL; -- GitLab