diff -r f4d93355b054 -r f727a21497bb src/server/util/io.c --- a/src/server/util/io.c Sun Jun 07 17:18:59 2020 +0200 +++ b/src/server/util/io.c Sat Jul 11 17:58:00 2020 +0200 @@ -282,6 +282,9 @@ IOStream *fd = st->fd; if(st->chunked_enc) { struct iovec *io = calloc(iovcnt + 1, sizeof(struct iovec)); + if(!io) { + return 0; + } char chunk_len[16]; io[0].iov_base = chunk_len; size_t len = 0; @@ -291,7 +294,10 @@ io[0].iov_len = snprintf(chunk_len, 16, "\r\n%zx\r\n", len); memcpy(io + 1, iovec, iovcnt * sizeof(struct iovec)); ssize_t r = fd->writev(fd, io, iovcnt + 1); - return r - io[0].iov_len; + + ssize_t ret = r - io[0].iov_len; + free(io); + return ret; } else { return fd->writev(fd, iovec, iovcnt); }