string-util: make strgrowpad0() a bit safer
Let#s make sure we never shorten the allocation leaving an invalid string (i.e. a memory allocation without a trailing NUL) around.
This commit is contained in:
+10
-1
@@ -627,14 +627,23 @@ char* strshorten(char *s, size_t l) {
|
||||
}
|
||||
|
||||
int strgrowpad0(char **s, size_t l) {
|
||||
size_t sz;
|
||||
|
||||
assert(s);
|
||||
|
||||
if (*s) {
|
||||
sz = strlen(*s) + 1;
|
||||
if (sz >= l) /* never shrink */
|
||||
return 0;
|
||||
} else
|
||||
sz = 0;
|
||||
|
||||
char *q = realloc(*s, l);
|
||||
if (!q)
|
||||
return -ENOMEM;
|
||||
|
||||
*s = q;
|
||||
|
||||
size_t sz = strlen(*s);
|
||||
memzero(*s + sz, l - sz);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user