diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index 47a67a2d840a802e157fbc2accce348bea081d33..1bb6f9708ef684d963df77157f6adcdb09724e0d 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -399,6 +399,11 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) case STAGE_ENC_INIT: { log_it(L_INFO, "Go to stage ENC: prepare the request"); a_client_pvt->session_key_open = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_MSRLN, NULL, 0, NULL, 0, 0); + if (!a_client_pvt->session_key_open) { + log_it(L_ERROR, "Insufficient memory! May be a huge memory leak present"); + a_client_pvt->stage_status = STAGE_STATUS_ERROR; + break; + } size_t l_key_size = a_client_pvt->session_key_open->pub_key_data_size; dap_cert_t *l_cert = a_client_pvt->auth_cert; dap_sign_t *l_sign = NULL; diff --git a/dap-sdk/net/server/enc_server/dap_enc_http.c b/dap-sdk/net/server/enc_server/dap_enc_http.c index d7cd6c71220413571afa96a3e4e3bc6475041d03..c04ddf05f18018e72f717db26160bf6e7580b79a 100644 --- a/dap-sdk/net/server/enc_server/dap_enc_http.c +++ b/dap-sdk/net/server/enc_server/dap_enc_http.c @@ -122,10 +122,6 @@ void enc_http_proc(struct dap_http_simple *cl_st, void * arg) dap_enc_ks_key_t * key_ks = dap_enc_ks_new(); if (s_acl_callback) { key_ks->acl_list = s_acl_callback(&l_sign_hash); - if (!key_ks->acl_list) { - *return_code = Http_Status_Unauthorized; - return; - } } else { log_it(L_WARNING, "Callback for ACL is not set, pass anauthorized"); } diff --git a/dap-sdk/net/stream/stream/dap_stream_ctl.c b/dap-sdk/net/stream/stream/dap_stream_ctl.c index e42b474d79654127858d38aacef56f5cb52d6735..21bd39eb99423262c6199bc573df54b2b48036e8 100644 --- a/dap-sdk/net/stream/stream/dap_stream_ctl.c +++ b/dap-sdk/net/stream/stream/dap_stream_ctl.c @@ -149,6 +149,11 @@ void s_proc(struct dap_http_simple *a_http_simple, void * a_arg) dap_http_header_t *l_hdr_key_id = dap_http_header_find(a_http_simple->http->in_headers, "KeyID"); if (l_hdr_key_id) { dap_enc_ks_key_t *l_ks_key = dap_enc_ks_find(l_hdr_key_id->value); + if (!l_ks_key) { + log_it(L_WARNING, "Key with ID %s not found", l_hdr_key_id->value); + *return_code = Http_Status_BadRequest; + return; + } ss->acl = l_ks_key->acl_list; } enc_http_reply_f(l_dg,"%u %s",ss->id,key_str); @@ -160,6 +165,7 @@ void s_proc(struct dap_http_simple *a_http_simple, void * a_arg) }else{ log_it(L_ERROR,"Wrong request: \"%s\"",l_dg->in_query); *return_code = Http_Status_BadRequest; + return; } unsigned int conn_t = 0; diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 2b6fa7859e67eedafb292ce8d78fb0219944d542..5a9025d903b6abd49d6bdfa932643094081b727e 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -2607,18 +2607,10 @@ 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); - bool l_accessible = false; if (l_net_count) { 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); - if (l_ret[i]) { - l_accessible = true; - } - } - if (!l_accessible) { // No one network can be accessed with this key - DAP_DELETE(l_ret); - l_ret = NULL; } return l_ret; }