diff options
author | Leonardo Arena <rnalrd@alpinelinux.org> | 2016-08-15 07:45:32 +0000 |
---|---|---|
committer | Leonardo Arena <rnalrd@alpinelinux.org> | 2016-08-15 07:45:32 +0000 |
commit | 140745f2f4ae3fcdb9cd068fabd9d8b6f6ab21f9 (patch) | |
tree | ea2d661e874ff216bd44006ac1d94a2b216c2fd2 /main/xen/xsa184-qemut-master.patch | |
parent | 922c62b2fad1ec9d9da365d6a3c0e11c29bd8701 (diff) | |
download | aports-140745f2f4ae3fcdb9cd068fabd9d8b6f6ab21f9.tar.bz2 aports-140745f2f4ae3fcdb9cd068fabd9d8b6f6ab21f9.tar.xz |
This reverts commit 4138843cb6988b29e88e93a4eb1a87fd2e75cace.
Diffstat (limited to 'main/xen/xsa184-qemut-master.patch')
-rw-r--r-- | main/xen/xsa184-qemut-master.patch | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/main/xen/xsa184-qemut-master.patch b/main/xen/xsa184-qemut-master.patch deleted file mode 100644 index b376f33a52..0000000000 --- a/main/xen/xsa184-qemut-master.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 17d8c4e47dfb41cb6778520ff2eab7a11fe12dfd Mon Sep 17 00:00:00 2001 -From: P J P <ppandit@redhat.com> -Date: Tue, 26 Jul 2016 15:31:59 +0100 -Subject: [PATCH] virtio: error out if guest exceeds virtqueue size - -A broken or malicious guest can submit more requests than the virtqueue -size permits. - -The guest can submit requests without bothering to wait for completion -and is therefore not bound by virtqueue size. This requires reusing -vring descriptors in more than one request, which is incorrect but -possible. Processing a request allocates a VirtQueueElement and -therefore causes unbounded memory allocation controlled by the guest. - -Exit with an error if the guest provides more requests than the -virtqueue size permits. This bounds memory allocation and makes the -buggy guest visible to the user. - -Reported-by: Zhenhao Hong <zhenhaohong@gmail.com> -Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> ---- - hw/virtio.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/virtio.c b/hw/virtio.c -index c26feff..42897bf 100644 ---- a/tools/qemu-xen-traditional/hw/virtio.c -+++ b/tools/qemu-xen-traditional/hw/virtio.c -@@ -421,6 +421,11 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem) - /* When we start there are none of either input nor output. */ - elem->out_num = elem->in_num = 0; - -+ if (vq->inuse >= vq->vring.num) { -+ fprintf(stderr, "Virtqueue size exceeded"); -+ exit(1); -+ } -+ - i = head = virtqueue_get_head(vq, vq->last_avail_idx++); - do { - struct iovec *sg; --- -2.1.4 - |