perf: free original memory on realloc failure in str_append
PATCH 1/1 perf: free original memory on realloc failure in str_append
str_append was added in 578d9c6. If realloc fails orignal block is not freed. Need to save the original pointer to handle on failure.
Signed-off-by David Ahern <[email protected]>
Cc Andi Kleen <[email protected]>
--- tools/perf/util/string.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
tools/perf/util/string.c +8 -1
@@ -398,13 +398,20 @@ int str_append(char **s, int *len, const char *a) {int olen = *s ?strlen (*s) :0 ;int nlen = olen +strlen (a) +1 ; +char *p; +if (*len < nlen) { *len = *len *2 ;if (*len < nlen) *len = nlen; + + p = *s; *s =realloc (*s, *len); -if (!*s) +if (!*s) { +free (p);return -ENOMEM ; + } +if (olen ==0 ) **s =0 ; }
Signature · 1 line
1.7.10.1