device: 0.223 other: 0.203 semantic: 0.132 performance: 0.077 graphic: 0.054 PID: 0.052 vnc: 0.043 network: 0.041 debug: 0.037 permissions: 0.032 files: 0.031 boot: 0.030 socket: 0.028 KVM: 0.017 debug: 0.480 other: 0.092 files: 0.070 semantic: 0.053 performance: 0.053 PID: 0.051 device: 0.049 network: 0.039 boot: 0.031 permissions: 0.022 vnc: 0.019 socket: 0.017 graphic: 0.016 KVM: 0.006 Missing checks for non-existent device in ide_exec_cmd Several calls in the ide_exec_cmd handler are missing checks for (!s->bs) or similar, resulting in NULL pointer dereferences, divide-by-zero, or possibly other badness if the guest performs operations on a non-existent IDE master. For example, the WIN_READ_NATIVE_MAX command does a 'ide_set_sector(s, s->nb_sectors - 1);', which does 'cyl = sector_num / (s->heads * s->sectors);', which will fail with a divide-by-zero if heads = sectors = 0. And WIN_MULTREAD also does not check for s->bs, but does a 'ide_sector_read(s);', which will do 'bdrv_read(s->bs, sector_num, s->io_buffer, n);' on a NULL s->bs, leading to a segfault. I do not *believe* that a malicious guest can do anything more than cause a crash with these bugs. The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience. [Expired for QEMU because there has been no activity for 60 days.]