]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
virtio-9p: record element after sanity checks
authorGreg Kurz <groug@kaod.org>
Thu, 29 Jun 2017 13:11:50 +0000 (15:11 +0200)
committerGreg Kurz <groug@kaod.org>
Thu, 29 Jun 2017 13:11:50 +0000 (15:11 +0200)
If the guest sends a malformed request, we end up with a dangling pointer
in V9fsVirtioState. This doesn't seem to cause any bug, but let's remove
this side effect anyway.

Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
hw/9pfs/virtio-9p-device.c

index 245abd8aaef1ce54e90e668dd0396b7af883f4a5..3380bfc0c5519d9b74e0a67f67e271e96036e5ae 100644 (file)
@@ -61,7 +61,6 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
         }
         QEMU_BUILD_BUG_ON(sizeof(out) != 7);
 
-        v->elems[pdu->idx] = elem;
         len = iov_to_buf(elem->out_sg, elem->out_num, 0,
                          &out, sizeof(out));
         if (len != sizeof(out)) {
@@ -70,6 +69,8 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
             goto out_free_req;
         }
 
+        v->elems[pdu->idx] = elem;
+
         pdu_submit(pdu, &out);
     }