]> xenbits.xensource.com Git - libvirt.git/commitdiff
virNetDevBandwidthParseRate: Reject negative values
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 7 Aug 2015 15:03:12 +0000 (17:03 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 10 Aug 2015 11:47:48 +0000 (13:47 +0200)
https://bugzilla.redhat.com/show_bug.cgi?id=1022292

The following XML really does not make any sense:

<inbound average="-1" burst="-2" peak="-3" floor="-4"/>

There can't be a negative packet rate. Well, so far we haven't
assigned any meaning to it. So reject it unless users harm themselves,
because otherwise we turn the negative numbers into really big values.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/netdev_bandwidth_conf.c

index fdd5b7faa65cf685fa9c2d278ff6d71dce2ff2e8..882433281d33cb59157f5c9b25c17c5aa899ad14 100644 (file)
@@ -50,7 +50,7 @@ virNetDevBandwidthParseRate(xmlNodePtr node, virNetDevBandwidthRatePtr rate)
     floor = virXMLPropString(node, "floor");
 
     if (average) {
-        if (virStrToLong_ull(average, NULL, 10, &rate->average) < 0) {
+        if (virStrToLong_ullp(average, NULL, 10, &rate->average) < 0) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("could not convert bandwidth average value '%s'"),
                            average);
@@ -68,21 +68,21 @@ virNetDevBandwidthParseRate(xmlNodePtr node, virNetDevBandwidthRatePtr rate)
         goto cleanup;
     }
 
-    if (peak && virStrToLong_ull(peak, NULL, 10, &rate->peak) < 0) {
+    if (peak && virStrToLong_ullp(peak, NULL, 10, &rate->peak) < 0) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("could not convert bandwidth peak value '%s'"),
                        peak);
         goto cleanup;
     }
 
-    if (burst && virStrToLong_ull(burst, NULL, 10, &rate->burst) < 0) {
+    if (burst && virStrToLong_ullp(burst, NULL, 10, &rate->burst) < 0) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("could not convert bandwidth burst value '%s'"),
                        burst);
         goto cleanup;
     }
 
-    if (floor && virStrToLong_ull(floor, NULL, 10, &rate->floor) < 0) {
+    if (floor && virStrToLong_ullp(floor, NULL, 10, &rate->floor) < 0) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("could not convert bandwidth floor value '%s'"),
                        floor);