summaryrefslogtreecommitdiff
path: root/src/basic/string-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-01-05 15:03:41 +0100
committerLennart Poettering <lennart@poettering.net>2021-01-06 17:24:46 +0100
commitc2bc710b247db83d7964f2259144c0c70defe2da (patch)
treee1982e0816bc2ddea91410999318dde40d134549 /src/basic/string-util.c
parent0ec1dc5ba395d797a0f7eaec88ba58e1b99a2ef3 (diff)
downloadsystemd-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.c20
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) {