From 9faf3d084c98b140aecc57b2b36d4cc8d1a839bb Mon Sep 17 00:00:00 2001 From: Matthias Bolte Date: Sun, 3 Apr 2011 11:21:32 +0200 Subject: [PATCH] xend: Remove 4kb stack allocation --- src/xen/xend_internal.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 8859373fc..8b07a8adf 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -279,11 +279,17 @@ istartswith(const char *haystack, const char *needle) static int ATTRIBUTE_NONNULL (2) xend_req(int fd, char **content) { - char buffer[4096]; + char *buffer; + size_t buffer_size = 4096; int content_length = 0; int retcode = 0; - while (sreads(fd, buffer, sizeof(buffer)) > 0) { + if (VIR_ALLOC_N(buffer, buffer_size) < 0) { + virReportOOMError(); + return -1; + } + + while (sreads(fd, buffer, buffer_size) > 0) { if (STREQ(buffer, "\r\n")) break; @@ -293,6 +299,8 @@ xend_req(int fd, char **content) retcode = atoi(buffer + 9); } + VIR_FREE(buffer); + if (content_length > 0) { ssize_t ret; -- 2.39.5