src/server/util/io.c

branch
webdav
changeset 251
f727a21497bb
parent 235
4990147c58d0
child 332
6f82ede01e1c
--- 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);
     }

mercurial