From: Richard W.M. Jones <rjones@redhat.com>
Date: Sat, 13 Nov 2010 14:58:50 +0000 (+0000)
Subject: filearch: Refuse to download initrd if it is huge.
X-Git-Tag: 1.6.2~13
X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=e44b034eaecc8803a830204534011b12c8ac8927;p=libguestfs.git

filearch: Refuse to download initrd if it is huge.
(cherry picked from commit b943d06466724df39b7261ce75e43b0201ed7372)
---

diff --git a/src/filearch.c b/src/filearch.c
index 35a2ceb..14c7c02 100644
--- a/src/filearch.c
+++ b/src/filearch.c
@@ -147,6 +147,14 @@ cpio_arch (guestfs_h *g, const char *file, const char *path)
   else
     method = "cat";
 
+  /* Security: Refuse to download initrd if it is huge. */
+  int64_t size = guestfs_filesize (g, path);
+  if (size == -1 || size > 100000000) {
+    error (g, _("size of %s unreasonable (%" PRIi64 " bytes)"),
+           path, size);
+    goto out;
+  }
+
   if (mkdtemp (dir) == NULL) {
     perrorf (g, "mkdtemp");
     goto out;