qga-win: prevent crash when executing fsinfo command
The fsinfo command is currently implemented for Windows only and it's disk parameter can be enabled by adding the define "CONFIG_QGA_NTDDSCSI" to the qga code. When enabled and executed the qemu-ga crashed with the following message: ------------------------------------------------ File qapi/qapi-visit-core.c, Line 49 Expression: !(v->type & VISITOR_OUTPUT) || *obj) ------------------------------------------------ After some digging, turns out that the GuestPCIAddress is null and the qapi visitor doesn't like that, so we can always allocate it instead and initiate all it's members to -1. Signed-off-by: Sameeh Jubran <sjubran@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: Tomáš Golembiovský <tgolembi@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
6589ce3573
commit
0d7f937e2a
|
@ -499,6 +499,11 @@ static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
|
||||||
char *buffer = NULL;
|
char *buffer = NULL;
|
||||||
GuestPCIAddress *pci = NULL;
|
GuestPCIAddress *pci = NULL;
|
||||||
char *name = g_strdup(&guid[4]);
|
char *name = g_strdup(&guid[4]);
|
||||||
|
pci = g_malloc0(sizeof(*pci));
|
||||||
|
pci->domain = -1;
|
||||||
|
pci->slot = -1;
|
||||||
|
pci->function = -1;
|
||||||
|
pci->bus = -1;
|
||||||
|
|
||||||
if (!QueryDosDevice(name, dev_name, ARRAY_SIZE(dev_name))) {
|
if (!QueryDosDevice(name, dev_name, ARRAY_SIZE(dev_name))) {
|
||||||
error_setg_win32(errp, GetLastError(), "failed to get dos device name");
|
error_setg_win32(errp, GetLastError(), "failed to get dos device name");
|
||||||
|
@ -570,7 +575,6 @@ static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
|
||||||
|
|
||||||
func = addr & 0x0000FFFF;
|
func = addr & 0x0000FFFF;
|
||||||
dev = (addr >> 16) & 0x0000FFFF;
|
dev = (addr >> 16) & 0x0000FFFF;
|
||||||
pci = g_malloc0(sizeof(*pci));
|
|
||||||
pci->domain = dev;
|
pci->domain = dev;
|
||||||
pci->slot = slot;
|
pci->slot = slot;
|
||||||
pci->function = func;
|
pci->function = func;
|
||||||
|
|
Loading…
Reference in New Issue