mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 13:17:58 +03:00
blkdeviotune: check for overflow when parsing XML
According to docs/schemas/domaincommon.rng and _virDomainBlockIoTuneInfo all the iotune values are interpreted as unsigned long long, however according to qemu_monitor_json.c, qemu silently truncates numbers larger than LLONG_MAX. There's really not much of a usage for such large numbers anyway yet. This patch provides the same overflow check during a domain start as it does during setting a blkdeviotune element in qemu_driver.c and thus reports an error when a larger number than LLONG_MAX is detected. https://bugzilla.redhat.com/show_bug.cgi?id=1131876
This commit is contained in:
parent
c285ffc4c2
commit
2f0944dec1
@ -3620,6 +3620,18 @@ qemuBuildDriveStr(virConnectPtr conn,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (disk->blkdeviotune.total_bytes_sec > LLONG_MAX ||
|
||||
disk->blkdeviotune.read_bytes_sec > LLONG_MAX ||
|
||||
disk->blkdeviotune.write_bytes_sec > LLONG_MAX ||
|
||||
disk->blkdeviotune.total_iops_sec > LLONG_MAX ||
|
||||
disk->blkdeviotune.read_iops_sec > LLONG_MAX ||
|
||||
disk->blkdeviotune.write_iops_sec > LLONG_MAX) {
|
||||
virReportError(VIR_ERR_OVERFLOW,
|
||||
_("block I/O throttle limit must "
|
||||
"be less than %llu using QEMU"), LLONG_MAX);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (disk->blkdeviotune.total_bytes_sec) {
|
||||
virBufferAsprintf(&opt, ",bps=%llu",
|
||||
disk->blkdeviotune.total_bytes_sec);
|
||||
|
Loading…
Reference in New Issue
Block a user