mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
virsh: check if domiftune parameters fit into UINT
We parse the bandwidth rates as unsinged long long, then try to fit them in VIR_TYPED_PARAM_UINT. Report an error if they exceed UINT_MAX instead of quietly using wrong values. https://bugzilla.redhat.com/show_bug.cgi?id=1043735
This commit is contained in:
parent
4a85bf3e2f
commit
ee668206cd
@ -2686,6 +2686,14 @@ cmdDomIftune(vshControl *ctl, const vshCmd *cmd)
|
||||
vshError(ctl, _("inbound format is incorrect"));
|
||||
goto cleanup;
|
||||
}
|
||||
/* we parse the rate as unsigned long long, but the API
|
||||
* only accepts UINT */
|
||||
if (inbound.average > UINT_MAX || inbound.peak > UINT_MAX ||
|
||||
inbound.burst > UINT_MAX) {
|
||||
vshError(ctl, _("inbound rate larger than maximum %u"),
|
||||
UINT_MAX);
|
||||
goto cleanup;
|
||||
}
|
||||
if (inbound.average == 0 && (inbound.burst || inbound.peak)) {
|
||||
vshError(ctl, _("inbound average is mandatory"));
|
||||
goto cleanup;
|
||||
@ -2714,6 +2722,12 @@ cmdDomIftune(vshControl *ctl, const vshCmd *cmd)
|
||||
vshError(ctl, _("outbound format is incorrect"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (outbound.average > UINT_MAX || outbound.peak > UINT_MAX ||
|
||||
outbound.burst > UINT_MAX) {
|
||||
vshError(ctl, _("outbound rate larger than maximum %u"),
|
||||
UINT_MAX);
|
||||
goto cleanup;
|
||||
}
|
||||
if (outbound.average == 0 && (outbound.burst || outbound.peak)) {
|
||||
vshError(ctl, _("outbound average is mandatory"));
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user