From: Jaroslav Kysela Date: Fri, 24 May 2019 08:44:49 +0000 (+0200) Subject: config: parse_string() fix the dynamic buffer allocation failure code (coverity) X-Git-Tag: v1.2.1~67 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=990b1a53ed800caac0bab1c2b7987205569861fe;p=alsa-lib.git config: parse_string() fix the dynamic buffer allocation failure code (coverity) Signed-off-by: Jaroslav Kysela --- diff --git a/src/conf.c b/src/conf.c index 3a3c91bf..3e4b76a3 100644 --- a/src/conf.c +++ b/src/conf.c @@ -4747,8 +4747,11 @@ static int parse_string(const char **ptr, char **val) return -EINVAL; case '\\': c = parse_char(ptr); - if (c < 0) + if (c < 0) { + if (alloc > bufsize) + free(buf); return c; + } break; default: (*ptr)++; @@ -4768,12 +4771,17 @@ static int parse_string(const char **ptr, char **val) alloc *= 2; if (old_alloc == bufsize) { buf = malloc(alloc); + if (!buf) + return -ENOMEM; memcpy(buf, _buf, old_alloc); } else { - buf = realloc(buf, alloc); + char *buf2 = realloc(buf, alloc); + if (!buf2) { + free(buf); + return -ENOMEM; + } + buf = buf2; } - if (!buf) - return -ENOMEM; } buf[idx++] = c; }