diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-01-05 15:03:41 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-01-06 17:24:46 +0100 |
commit | c2bc710b247db83d7964f2259144c0c70defe2da (patch) | |
tree | e1982e0816bc2ddea91410999318dde40d134549 /src/basic/string-util.c | |
parent | 0ec1dc5ba395d797a0f7eaec88ba58e1b99a2ef3 (diff) | |
download | systemd-c2bc710b247db83d7964f2259144c0c70defe2da.tar.gz |
string-util: imply NULL termination of strextend() argument list
The trailing NULL in the argument list is now implied (similar to
what we already have in place in strjoin()).
Diffstat (limited to 'src/basic/string-util.c')
-rw-r--r-- | src/basic/string-util.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/basic/string-util.c b/src/basic/string-util.c index 7ab460faa5..105952156d 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -791,10 +791,10 @@ char *strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]) { return *ibuf; } -char *strextend_with_separator(char **x, const char *separator, ...) { - bool need_separator; +char *strextend_with_separator_internal(char **x, const char *separator, ...) { size_t f, l, l_separator; - char *r, *p; + bool need_separator; + char *nr, *p; va_list ap; assert(x); @@ -818,7 +818,7 @@ char *strextend_with_separator(char **x, const char *separator, ...) { if (need_separator) n += l_separator; - if (n > ((size_t) -1) - l) { + if (n >= SIZE_MAX - l) { va_end(ap); return NULL; } @@ -830,11 +830,12 @@ char *strextend_with_separator(char **x, const char *separator, ...) { need_separator = !isempty(*x); - r = realloc(*x, l+1); - if (!r) + nr = realloc(*x, l+1); + if (!nr) return NULL; - p = r + f; + *x = nr; + p = nr + f; va_start(ap, separator); for (;;) { @@ -853,12 +854,11 @@ char *strextend_with_separator(char **x, const char *separator, ...) { } va_end(ap); - assert(p == r + l); + assert(p == nr + l); *p = 0; - *x = r; - return r + l; + return p; } char *strrep(const char *s, unsigned n) { |