From 9eb9a87150559893172936359ca8083960c53ba2 Mon Sep 17 00:00:00 2001 From: Davide Berardi Date: Sat, 26 Nov 2016 16:17:48 +0100 Subject: [PATCH] Copy capabilities list before strtok_r With this fix /proc//cmdline is preserved. --- capset_from_namelist.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/capset_from_namelist.c b/capset_from_namelist.c index df5efc6..05c3e4d 100644 --- a/capset_from_namelist.c +++ b/capset_from_namelist.c @@ -55,8 +55,14 @@ int capset_from_namelist(char *namelist, uint64_t *capset) { char *onecap; char *tmptok; char *spacetok; + + size_t namelistlen = strlen(namelist) + 1; + char namelist_cpy[namelistlen]; + char *namelist_ptr = namelist_cpy; *capset = 0; - for (; (onecap = strtok_r(namelist,",",&tmptok)) != NULL; namelist = NULL) + + strncpy(namelist_ptr, namelist, namelistlen); + for (; (onecap = strtok_r(namelist_ptr,",",&tmptok)) != NULL; namelist_ptr = NULL) rv |= addcap(strtok_r(onecap," \t",&spacetok), capset); return rv; }