summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2013-05-20 11:35:00 +0530
committerMichael Roth <mdroth@linux.vnet.ibm.com>2013-05-20 11:25:00 -0500
commit745f6c0ef7f2fcd025e395538f1e2e3c9893de41 (patch)
tree05ab9f0be2b9fd1ddae376e6507064e1cc861de2
parent0182df5ae55a30058b8851dfaa2c4cc065d1b126 (diff)
downloadqemu-745f6c0ef7f2fcd025e395538f1e2e3c9893de41.tar.gz
hw/9pfs: Fix segfault with 9p2000.u
When guest tries to chmod a block or char device file over 9pfs, the qemu process segfaults. With 9p2000.u protocol we use wstat to change mode bits and client don't send extension information for chmod. We need to check for size field to check whether extension info is present or not. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reported-by: Michael Tokarev <mjt@tls.msk.ru> Acked-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--hw/9pfs/virtio-9p.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/9pfs/virtio-9p.c b/hw/9pfs/virtio-9p.c
index d3ea820eae..52d9b8cc89 100644
--- a/hw/9pfs/virtio-9p.c
+++ b/hw/9pfs/virtio-9p.c
@@ -659,7 +659,7 @@ static mode_t v9mode_to_mode(uint32_t mode, V9fsString *extension)
ret |= S_IFIFO;
}
if (mode & P9_STAT_MODE_DEVICE) {
- if (extension && extension->data[0] == 'c') {
+ if (extension->size && extension->data[0] == 'c') {
ret |= S_IFCHR;
} else {
ret |= S_IFBLK;