From b32efd4b179b958d57653f4cc074413307e7dab1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 25 Sep 2017 11:09:57 +0200 Subject: [PATCH] basic/cap-list: report empty capability set as "" MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit $ systemctl show elogind-journald -p CapabilityBoundingSet,AmbientCapabilities CapabilityBoundingSet=cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_setgid ... AmbientCapabilities=(null) ↓ $ systemctl show elogind-journald -p CapabilityBoundingSet,AmbientCapabilities CapabilityBoundingSet=cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_setgid ... AmbientCapabilities= Partially fixes #6511. Add some basic tests for the printing function. --- src/basic/cap-list.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/basic/cap-list.c b/src/basic/cap-list.c index 124641f94..2e9b2d9a5 100644 --- a/src/basic/cap-list.c +++ b/src/basic/cap-list.c @@ -86,15 +86,17 @@ int capability_set_to_string_alloc(uint64_t set, char **s) { add = strlen(p); - if (!GREEDY_REALLOC0(str, allocated, n + add + 2)) + if (!GREEDY_REALLOC(str, allocated, n + add + 2)) return -ENOMEM; strcpy(mempcpy(str + n, p, add), " "); n += add + 1; } - if (n != 0) - str[n - 1] = '\0'; + if (!GREEDY_REALLOC(str, allocated, n + 1)) + return -ENOMEM; + + str[n > 0 ? n - 1 : 0] = '\0'; /* truncate the last space, if it's there */ *s = str; str = NULL; -- 2.30.2