[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH-for-5.0 v2 4/4] qga: Restrict guest-file-read count to 10 MB

From: Philippe Mathieu-Daudé
Subject: Re: [PATCH-for-5.0 v2 4/4] qga: Restrict guest-file-read count to 10 MB to avoid crashes
Date: Tue, 31 Mar 2020 16:17:22 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 3/31/20 4:15 PM, Daniel P. Berrangé wrote:
On Tue, Mar 31, 2020 at 04:06:38PM +0200, Philippe Mathieu-Daudé wrote:
On https://www.mail-archive.com/address@hidden/msg693176.html
Daniel Berrangé commented:

   The QEMU guest agent protocol is not sensible way to access huge
   files inside the guest. It requires the inefficient process of
   reading the entire data into memory than duplicating it again in
   base64 format, and then copying it again in the JSON serializer /
   monitor code.

   For arbitrary general purpose file access, especially for large
   files, use a real file transfer program or use a network block
   device, not the QEMU guest agent.

To avoid bug reports as BZ#1594054, follow his suggestion to put a
low, hard limit on "count" in the guest agent QAPI schema, and don't
allow count to be larger than 10 MB.

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1594054
Reported-by: Fakhri Zulkifli <address@hidden>
Suggested-by: Daniel P. Berrangé <address@hidden>
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
  qga/qapi-schema.json | 6 ++++--
  qga/commands.c       | 6 +++++-
  2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index f6fcb59f34..7758d9daf8 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -266,11 +266,13 @@
  # @guest-file-read:
-# Read from an open file in the guest. Data will be base64-encoded
+# Read from an open file in the guest. Data will be base64-encoded.
+# As this command is just for limited, ad-hoc debugging, such as log
+# file access, the number of bytes to read is limited to 10 MB.
  # @handle: filehandle returned by guest-file-open
-# @count: maximum number of bytes to read (default is 4KB)
+# @count: maximum number of bytes to read (default is 4KB, maximum is 10MB)
  # Returns: @GuestFileRead on success.
diff --git a/qga/commands.c b/qga/commands.c
index 8ee1244ebb..c130d1b0f5 100644
--- a/qga/commands.c
+++ b/qga/commands.c
@@ -11,6 +11,7 @@
#include "qemu/osdep.h"
+#include "qemu/units.h"
  #include "guest-agent-core.h"
  #include "qga-qapi-commands.h"
  #include "qapi/error.h"
@@ -18,11 +19,14 @@
  #include "qemu/base64.h"
  #include "qemu/cutils.h"
  #include "qemu/atomic.h"
+#include "commands-common.h"

This needs to be in the previous patch AFAICT.

Oops, thanks :)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]