From: Lennart Poettering Date: Fri, 11 Nov 2022 21:07:43 +0000 (+0100) Subject: nulstr-util: don't use 'r' for anything but integer return values X-Git-Tag: v253-rc1~539^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db645f936f2b686e05524e198df00112acaff3c6;p=thirdparty%2Fsystemd.git nulstr-util: don't use 'r' for anything but integer return values --- diff --git a/src/basic/nulstr-util.c b/src/basic/nulstr-util.c index 2da64fcbe99..67226d208c2 100644 --- a/src/basic/nulstr-util.c +++ b/src/basic/nulstr-util.c @@ -55,16 +55,18 @@ char** strv_parse_nulstr(const char *s, size_t l) { } char** strv_split_nulstr(const char *s) { - _cleanup_strv_free_ char **r = NULL; + _cleanup_strv_free_ char **l = NULL; + + /* This parses a nulstr, without specification of size, and stops at an empty string. This cannot + * parse nulstrs with embedded empty strings hence, as an empty string is an end marker. Use + * strv_parse_nulstr() above to parse a nulstr with embedded empty strings (which however requires a + * size to be specified) */ NULSTR_FOREACH(i, s) - if (strv_extend(&r, i) < 0) + if (strv_extend(&l, i) < 0) return NULL; - if (!r) - return strv_new(NULL); - - return TAKE_PTR(r); + return l ? TAKE_PTR(l) : strv_new(NULL); } int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) {