This is an automated email from the ASF dual-hosted git repository. pengzheng pushed a commit to branch feature/coverity-fix in repository https://gitbox.apache.org/repos/asf/celix.git
commit 9a5602fbd822239fd94877ef768a87809afd5f35 Author: PengZheng <[email protected]> AuthorDate: Mon Jan 1 12:41:29 2024 +0800 [CID 335557]Fix use-after-free in http_admin --- bundles/http_admin/http_admin/src/websocket_admin.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bundles/http_admin/http_admin/src/websocket_admin.c b/bundles/http_admin/http_admin/src/websocket_admin.c index 2cd8a453..28779683 100644 --- a/bundles/http_admin/http_admin/src/websocket_admin.c +++ b/bundles/http_admin/http_admin/src/websocket_admin.c @@ -27,6 +27,7 @@ #include "websocket_admin.h" #include "celix_compiler.h" +#include "celix_stdlib_cleanup.h" #include "celix_utils_api.h" struct websocket_admin_manager { @@ -41,7 +42,7 @@ struct websocket_admin_manager { websocket_admin_manager_t *websocketAdmin_create(celix_bundle_context_t *context, struct mg_context *svr_ctx) { celix_status_t status; - websocket_admin_manager_t *admin = (websocket_admin_manager_t *) calloc(1, sizeof(websocket_admin_manager_t)); + celix_autofree websocket_admin_manager_t *admin = (websocket_admin_manager_t *) calloc(1, sizeof(websocket_admin_manager_t)); if (admin == NULL) { return NULL; @@ -53,10 +54,10 @@ websocket_admin_manager_t *websocketAdmin_create(celix_bundle_context_t *context if(status != CELIX_SUCCESS) { //No need to destroy other things - free(admin); + return NULL; } - return admin; + return celix_steal_ptr(admin); } void websocketAdmin_destroy(websocket_admin_manager_t *admin) {
