From: Amit Shah <amit.shah@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Amit Shah <amit.shah@redhat.com>, John Snow <jsnow@redhat.com>,
qemu list <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH 1/1] virtio-rng: Add human-readable error message for negative max-bytes parameter
Date: Tue, 22 Jul 2014 17:33:16 +0530 [thread overview]
Message-ID: <713e8a102222b6b8ca65050d13b287f5705831b0.1406030120.git.amit.shah@redhat.com> (raw)
In-Reply-To: <cover.1406030120.git.amit.shah@redhat.com>
In-Reply-To: <cover.1406030120.git.amit.shah@redhat.com>
From: John Snow <jsnow@redhat.com>
If a negative integer is used for the max_bytes parameter, QEMU currently
calls abort() and leaves behind a core dump. This patch replaces the
abort with a simple error message to make the reason for the termination
clearer. This also ensures device-hotplug with invalid input doesn't
cause qemu to quit.
There is an underlying insufficiency in the parameter parsing code of QEMU
that renders it unable to reject negative values for unsigned properties,
thus the error message "a non-negative integer below 2^63" is the most
user-friendly and correct message we can give until the underlying
insufficiency is corrected.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
hw/virtio/virtio-rng.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index 1356aca..7c5a675 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -181,7 +181,13 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
vrng->vq = virtio_add_queue(vdev, 8, handle_input);
- assert(vrng->conf.max_bytes <= INT64_MAX);
+ /* Workaround: Property parsing does not enforce unsigned integers,
+ * So this is a hack to reject such numbers. */
+ if (vrng->conf.max_bytes > INT64_MAX) {
+ error_set(errp, QERR_INVALID_PARAMETER_VALUE, "max-bytes",
+ "a non-negative integer below 2^63");
+ return;
+ }
vrng->quota_remaining = vrng->conf.max_bytes;
vrng->rate_limit_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL,
--
1.9.3
next prev parent reply other threads:[~2014-07-22 12:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-22 12:03 [Qemu-devel] [PULL v2 for-2.1] virtio-rng: Fix abort on invalid input Amit Shah
2014-07-22 12:03 ` Amit Shah [this message]
2014-07-22 13:03 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=713e8a102222b6b8ca65050d13b287f5705831b0.1406030120.git.amit.shah@redhat.com \
--to=amit.shah@redhat.com \
--cc=jsnow@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).