From 680836fa520b0c977b9def6d03db0b33515525b4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henrik=20Kj=C3=B6lhede?= Date: Sun, 21 Jun 2015 11:13:01 +0200 Subject: [PATCH] Make sure to cleanup and exit with an error if malloc fails in append_alloted MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Henrik Kjölhede --- src/lxc/lxc_user_nic.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lxc/lxc_user_nic.c b/src/lxc/lxc_user_nic.c index ca4bea57b..2f1045133 100644 --- a/src/lxc/lxc_user_nic.c +++ b/src/lxc/lxc_user_nic.c @@ -194,6 +194,7 @@ static struct alloted_s *append_alloted(struct alloted_s **head, char *name, int if (head == NULL || name == NULL) { // sanity check. parameters should not be null + fprintf(stderr, "NULL parameters to append_alloted not allowed\n"); return NULL; } @@ -201,6 +202,7 @@ static struct alloted_s *append_alloted(struct alloted_s **head, char *name, int if (al == NULL) { // unable to allocate memory to new struct + fprintf(stderr, "Out of memory in append_alloted\n"); return NULL; } @@ -294,8 +296,14 @@ static int get_alloted(char *me, char *intype, char *link, struct alloted_s **al /* found the user or group with the appropriate settings, therefore finish the search. * what to do if there are more than one applicable lines? not specified in the docs. * since getline is implemented with realloc, we don't need to free line until exiting func. + * + * if append_alloted returns NULL, e.g. due to a malloc error, we set count to 0 and break the loop, + * allowing cleanup and then exiting from main() */ - append_alloted(alloted, name, n); + if (append_alloted(alloted, name, n) == NULL) { + count = 0; + break; + } count += n; } -- 2.47.2