From 106cb89907ea6eab0073708bb8d6f56d7fc64509 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 25 Oct 2016 17:05:56 +0200 Subject: [PATCH 14/26] BUG/MINOR: systemd: check return value of calloc() The wrapper is not the best reliable thing in the universe, so start by adding at least the minimum expected controls :-/ To be backported to 1.5 and 1.6. (cherry picked from commit 3747ea07ce6b647b86559383f7d09b42550d42f3) --- src/haproxy-systemd-wrapper.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c index 84d2e17..15c48ca 100644 --- a/src/haproxy-systemd-wrapper.c +++ b/src/haproxy-systemd-wrapper.c @@ -77,11 +77,17 @@ static void spawn_haproxy(char **pid_strv, int nb_pid) pid = fork(); if (!pid) { - /* 3 for "haproxy -Ds -sf" */ - char **argv = calloc(4 + main_argc + nb_pid + 1, sizeof(char *)); + char **argv; int i; int argno = 0; + /* 3 for "haproxy -Ds -sf" */ + argv = calloc(4 + main_argc + nb_pid + 1, sizeof(char *)); + if (!argv) { + fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: failed to calloc(), please try again later.\n"); + exit(1); + } + reset_signal_handler(); locate_haproxy(haproxy_bin, 512); argv[argno++] = haproxy_bin; -- 2.7.3