]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
xend: Remove 4kb stack allocation
authorMatthias Bolte <matthias.bolte@googlemail.com>
Sun, 3 Apr 2011 09:21:32 +0000 (11:21 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Tue, 5 Apr 2011 07:14:06 +0000 (09:14 +0200)
src/xen/xend_internal.c

index 8859373fcc72717110fc62825c199208764abfca..8b07a8adff3f69d3bb29b3bd55d58cad299945cd 100644 (file)
@@ -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;