From fac7c663865a706b521dcdb3182c92e93bf0c721 Mon Sep 17 00:00:00 2001 From: Kien Truong Date: Mon, 6 Apr 2015 17:05:20 +0100 Subject: [PATCH] Check malloc failure when sorting cgroup settings. Signed-off-by: Kien Truong --- src/lxc/cgfs.c | 3 +++ src/lxc/cgmanager.c | 3 +++ src/lxc/conf.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/src/lxc/cgfs.c b/src/lxc/cgfs.c index 0b7f99818c..2ee9058ab3 100644 --- a/src/lxc/cgfs.c +++ b/src/lxc/cgfs.c @@ -1895,6 +1895,9 @@ static int do_setup_cgroup_limits(struct cgfs_data *d, return 0; sorted_cgroup_settings = sort_cgroup_settings(cgroup_settings); + if (!sorted_cgroup_settings) { + return -1; + } lxc_list_for_each(iterator, sorted_cgroup_settings) { cg = iterator->elem; diff --git a/src/lxc/cgmanager.c b/src/lxc/cgmanager.c index 51373913d0..de0bf30f3a 100644 --- a/src/lxc/cgmanager.c +++ b/src/lxc/cgmanager.c @@ -1235,6 +1235,9 @@ static bool cgm_setup_limits(void *hdata, struct lxc_list *cgroup_settings, bool } sorted_cgroup_settings = sort_cgroup_settings(cgroup_settings); + if (!sorted_cgroup_settings) { + return false; + } lxc_list_for_each(iterator, sorted_cgroup_settings) { char controller[100], *p; diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 64ced0f84a..9255b3488a 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -4577,11 +4577,19 @@ struct lxc_list *sort_cgroup_settings(struct lxc_list* cgroup_settings) struct lxc_list *item = NULL; result = malloc(sizeof(*result)); + if (!result) { + ERROR("failed to allocate memory to sort cgroup settings"); + return NULL; + } lxc_list_init(result); /*Iterate over the cgroup settings and copy them to the output list*/ lxc_list_for_each(it, cgroup_settings) { item = malloc(sizeof(*item)); + if (!item) { + ERROR("failed to allocate memory to sort cgroup settings"); + return NULL; + } item->elem = it->elem; cg = it->elem; if (strcmp(cg->subsystem, "memory.memsw.limit_in_bytes") == 0) {