pci-devfn: check that device/slot number is within range
Need to check that guest slot/device number is not > 31 or walk off the devfn table when checking if a devfn is available or not in a guest. before this fix, passing in an addr=abc or addr=34, can crash qemu, sometimes fail gracefully if data past end of devfn table fails the availability test. with this fix, get clean error: Property 'pci-assign.addr' doesn't take value '34' also tested when no addr= param passed for guest (pcicfg) address, and that worked as well. Signed-off-by: Don Dutile <ddutile@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
c1d23eaccc
commit
ffe3ce1173
@ -524,6 +524,8 @@ static int parse_pci_devfn(DeviceState *dev, Property *prop, const char *str)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (fn > 7)
|
if (fn > 7)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
if (slot > 31)
|
||||||
|
return -EINVAL;
|
||||||
*ptr = slot << 3 | fn;
|
*ptr = slot << 3 | fn;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user