From 3dd873778502a3dc63e10696e75ce68ac93078a3 Mon Sep 17 00:00:00 2001 From: Constantin P <papizh.konstantin@demlabs.net> Date: Wed, 5 Jun 2024 14:47:16 +0700 Subject: [PATCH] Segv on certs count mismatch fixed --- modules/consensus/esbocs/dap_chain_cs_esbocs.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 3be2d5eac3..fb9a18318c 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -254,12 +254,14 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg) char l_cert_name[512]; dap_cert_t *l_cert_cur; snprintf(l_cert_name, sizeof(l_cert_name), "%s.%zu", l_auth_certs_prefix, i); - if ((l_cert_cur = dap_cert_find_by_name(l_cert_name)) == NULL) { + if ( !(l_cert_cur = dap_cert_find_by_name(l_cert_name)) ) { snprintf(l_cert_name, sizeof(l_cert_name), "%s.%zu.pub", l_auth_certs_prefix, i); - if ((l_cert_cur = dap_cert_find_by_name(l_cert_name)) == NULL) { - log_it(L_ERROR, "Can't find cert \"%s\"", l_cert_name); - l_ret = -3; - goto lb_err; + if ( !(l_cert_cur = dap_cert_find_by_name(l_cert_name)) ) { + if (i >= l_node_addrs_count) + log_it(L_ERROR, "Can't find cert \"%s\"", l_cert_name); + else + log_it(L_ERROR, "Can't find cert \"%s\" possibly for address \"%s\"", l_cert_name, l_addrs[i]); + continue; } } dap_chain_addr_t l_signing_addr; -- GitLab