From 9c056dc6d696d3eabd192ad6b396e27bb5846362 Mon Sep 17 00:00:00 2001 From: "Neil.wrz" Date: Thu, 17 Nov 2022 19:25:26 -0800 Subject: [PATCH 47/54] handle security warning for cleanup module Signed-off-by: Neil.wrz --- .../container/leftover_cleanup/cleanup.c | 17 +++++++++++++---- src/daemon/modules/image/image.c | 14 +++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/daemon/modules/container/leftover_cleanup/cleanup.c b/src/daemon/modules/container/leftover_cleanup/cleanup.c index ec9517cf..9ce1dd0c 100644 --- a/src/daemon/modules/container/leftover_cleanup/cleanup.c +++ b/src/daemon/modules/container/leftover_cleanup/cleanup.c @@ -82,15 +82,25 @@ static int default_cleaner() static struct cleaners *cleaner_init() { + int ret = 0; struct cleaners *clns = create_cleaners(); if (clns == NULL) { return NULL; } - add_clean_node(clns, default_cleaner, "default clean"); + ret = add_clean_node(clns, default_cleaner, "default clean"); + if (ret != 0) { + ERROR("add default_cleaner error"); + return clns; + } + #ifdef ENABLE_OCI_IMAGE - add_clean_node(clns, oci_rootfs_cleaner, "clean rootfs"); + ret = add_clean_node(clns, oci_rootfs_cleaner, "clean rootfs"); + if (ret != 0) { + ERROR("add oci_rootfs_cleaner error"); + return clns; + } #endif return clns; @@ -101,11 +111,10 @@ static void do_clean(struct cleaners * clns) struct linked_list *it = NULL; struct linked_list *next = NULL; struct clean_node *c_node = NULL; - int ret = 0; linked_list_for_each_safe(it, &(clns->cleaner_list), next) { c_node = (struct clean_node *)it->elem; - if ((ret = c_node->cleaner()) != 0) { + if (c_node->cleaner() != 0) { ERROR("failed to clean for: %s", c_node->desc); } else { DEBUG("do clean success for: %s", c_node->desc); diff --git a/src/daemon/modules/image/image.c b/src/daemon/modules/image/image.c index ed7d968a..fb0db361 100644 --- a/src/daemon/modules/image/image.c +++ b/src/daemon/modules/image/image.c @@ -1775,21 +1775,29 @@ int im_container_export(const im_export_request *request) #ifdef ENABLE_OCI_IMAGE char *im_get_rootfs_dir(const im_get_rf_dir_request *request) { char *dir = NULL; + struct bim *bim = NULL; if (request->type == NULL) { ERROR("Missing image type"); return NULL; } - struct bim *bim = NULL; bim = bim_get(request->type, NULL, NULL, NULL); + + if (bim == NULL) { + ERROR("Failed to init bim, image type:%s", request->type); + return NULL; + } + if (bim->ops->get_dir_rf == NULL) { ERROR("Unimplemnts get rootfs dir in %s", bim->type); - return NULL; + goto out; } + dir = bim->ops->get_dir_rf(); - bim_put(bim); +out: + bim_put(bim); return dir; } #else -- 2.25.1