Projects
Eulaceura:Factory
secGear
_service:obs_scm:0006-fix-issues-about-double-c...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0006-fix-issues-about-double-create-destory.patch of Package secGear
From f1361d482b30dc651485b3ae0665a33148602786 Mon Sep 17 00:00:00 2001 From: liwei3013 <liwei3013@126.com> Date: Wed, 24 Feb 2021 14:00:10 +0800 Subject: [PATCH 6/7] fix issues about double create/destory Signed-off-by: liwei3013 <liwei3013@126.com> --- src/host_src/enclave.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/host_src/enclave.c b/src/host_src/enclave.c index 14f6aae..e3020d3 100644 --- a/src/host_src/enclave.c +++ b/src/host_src/enclave.c @@ -67,7 +67,6 @@ static void error_handle(cc_enclave_t **l_context, void *handle, p_tee_registere if (path) { free(path); } - path = NULL; if (*l_context) { free(*l_context); @@ -110,8 +109,14 @@ done: static bool check_flag(cc_enclave_result_t *res, const char *path, uint32_t flags, const enclave_features_t *features, const uint32_t features_count, cc_enclave_t **enclave) { - if (!path || !enclave || (features_count > 0 && features == NULL) - || (features_count == 0 && features != NULL) || (flags & SECGEAR_RESERVED_FLAG)) { + if (enclave == NULL || *enclave != NULL) { + *res = CC_ERROR_BAD_PARAMETERS; + print_error_term("Input context should not be NULL or context pointer should be set to NULL\n"); + return false; + } + + if (!path || (features_count > 0 && features == NULL) || (features_count == 0 && features != NULL) + || (flags & SECGEAR_RESERVED_FLAG)) { *res = CC_ERROR_BAD_PARAMETERS; print_error_term("Parameter error\n"); return false; @@ -194,8 +199,12 @@ cc_enclave_result_t cc_enclave_create(const char *path, enclave_type_t type, uin } SECGEAR_CHECK_RES_NO_LOG(res); - if (!check_flag(&res, path, flags, features, features_count, enclave) || !check_transform_path(&res, path, &l_path) - || !chose_engine_type(&res, type, version, &type_version)|| !allocate_context_memory(&res, &l_context)) { + if (!check_flag(&res, path, flags, features, features_count, enclave)) { + return res; + } + + if (!check_transform_path(&res, path, &l_path) || !chose_engine_type(&res, type, version, &type_version) + || !allocate_context_memory(&res, &l_context)) { goto done; } @@ -267,7 +276,8 @@ cc_enclave_result_t cc_enclave_destroy(cc_enclave_t *context) /* check context and enclave engine context */ if (!context || !context->list_ops_node) { - print_error_goto("Function context parameter error\n"); + print_error_term("Function context parameter error\n"); + return CC_ERROR_BAD_PARAMETERS; } if (context->list_ops_node->ops_desc->ops->cc_destroy_enclave != NULL) { @@ -294,6 +304,7 @@ cc_enclave_result_t cc_enclave_destroy(cc_enclave_t *context) pthread_mutex_unlock(&(g_list_ops.mutex_work)); print_error_goto("Close engine failure\n"); } + context->list_ops_node = NULL; } /* free enclave number resources */ g_list_ops.enclaveState.enclave_count--; @@ -308,6 +319,5 @@ done: if (context) { free(context); } - context = NULL; return res; } -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2