From d7e32cc3503b25817fbf631c5bff3edb454a8d1c Mon Sep 17 00:00:00 2001 From: fengweihao Date: Fri, 30 Nov 2018 19:24:44 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=86=85=E5=AD=98=E6=B3=84?= =?UTF-8?q?=E6=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cert_session.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/cert_session.c b/src/cert_session.c index e21aa2e..0d6ee5a 100644 --- a/src/cert_session.c +++ b/src/cert_session.c @@ -435,14 +435,18 @@ x509_get_alt_name(X509 *x509, char *extraname) } GENERAL_NAMES* subjectAltNames = (GENERAL_NAMES*)X509_get_ext_d2i(x509, NID_subject_alt_name, NULL, NULL); - int cnt = sk_GENERAL_NAME_num(subjectAltNames); + if (subjectAltNames){ + int cnt = sk_GENERAL_NAME_num(subjectAltNames); - for (i = 0; i < cnt; i++) { - GENERAL_NAME* generalName = sk_GENERAL_NAME_value(subjectAltNames, i); - xret = x509_alt_name_cmp(ASN1_STRING_data(GENERAL_NAME_get0_value(generalName, NULL)), extraname); - if (xret == 0) + for (i = 0; i < cnt; i++) { + GENERAL_NAME* generalName = sk_GENERAL_NAME_value(subjectAltNames, i); + xret = x509_alt_name_cmp(ASN1_STRING_data(GENERAL_NAME_get0_value(generalName, NULL)), extraname); + if (xret == 0) break; + } } + if (subjectAltNames) + GENERAL_NAMES_free(subjectAltNames); finish: return xret; } @@ -547,6 +551,7 @@ x509_modify_by_cert(X509 *cacrt, EVP_PKEY *cakey, X509 *origcrt, char *pkey, !X509_set_pubkey(crt, key)) goto errout; + EVP_PKEY_free(key); //extensions X509V3_CTX ctx; X509V3_set_ctx(&ctx, cacrt, crt, NULL, NULL, 0); @@ -748,6 +753,7 @@ errout2: sk_GENERAL_NAME_pop_free(names, GENERAL_NAME_free); errout: X509_free(crt); + EVP_PKEY_free(key); err: return NULL; } @@ -1034,6 +1040,8 @@ modify: x509_get_msg_from_ca(x509, sign); x509_get_msg_from_ca(_root, root); + if (request->origin) + X509_free(request->origin); X509_free(x509); finish: return _expire; @@ -1239,6 +1247,8 @@ redis_clnt_send(struct request_t *request, redisReply *reply) evhttp_socket_send(request->evh_req, reply->str); finish: + if (request->origin) + X509_free(request->origin); kfree(request); return xret; } @@ -1265,7 +1275,6 @@ void redis_get_callback(redisAsyncContext *c, void *r, void *privdata) default: break; } - return; } @@ -1463,6 +1472,7 @@ evhttp_socket_close_cb(struct evhttp_connection *evcon, if (NULL == evcon){ goto finish; } + finish: return; } @@ -1732,7 +1742,7 @@ redis_link_detection(uint32_t __attribute__((__unused__)) uid, if(info->cl_ctx->err != 0){ if (info->sync) redisFree(info->sync); - + xret = redis_sync_init(&info->sync); if (xret < 0 || !info->sync){ mesa_runtime_log(RLOG_LV_FATAL, MODULE_NAME, "[%d]trying to connect sync redis failed", tid);