Pablo Greco 40546a
From ae178683071d3948d1d1da6205726a3e24923b45 Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <ae178683071d3948d1d1da6205726a3e24923b45@dist-git>
Pablo Greco 40546a
From: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Date: Wed, 21 Aug 2019 09:42:34 +0200
Pablo Greco 40546a
Subject: [PATCH] vircgroupv2: fix parsing multiple values in single file
Pablo Greco 40546a
Pablo Greco 40546a
Our virStrToLong* helpers converts string to integers where it wraps
Pablo Greco 40546a
strtol standard function.  After the conversion happens and there are
Pablo Greco 40546a
some remaining invalid characters our helpers will fail if the second
Pablo Greco 40546a
argument is NULL.
Pablo Greco 40546a
Pablo Greco 40546a
We need to pass pointer to string in cases where there are multiple
Pablo Greco 40546a
values in a single file.
Pablo Greco 40546a
Pablo Greco 40546a
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1741825
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Pablo Greco 40546a
(cherry picked from commit c854e0bd33c7a5afb04a36465bf04f861b2efef5)
Pablo Greco 40546a
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Message-Id: <49fe97f452eb4247040b1f322d348a3eea931efe.1566373284.git.phrdina@redhat.com>
Pablo Greco 40546a
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/util/vircgroupv2.c | 16 ++++++++--------
Pablo Greco 40546a
 1 file changed, 8 insertions(+), 8 deletions(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
Pablo Greco 40546a
index 9ae47e775e..e129686a52 100644
Pablo Greco 40546a
--- a/src/util/vircgroupv2.c
Pablo Greco 40546a
+++ b/src/util/vircgroupv2.c
Pablo Greco 40546a
@@ -672,7 +672,7 @@ virCgroupV2GetBlkioWeight(virCgroupPtr group,
Pablo Greco 40546a
         tmp = value;
Pablo Greco 40546a
     }
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (virStrToLong_ui(tmp, NULL, 10, weight) < 0) {
Pablo Greco 40546a
+    if (virStrToLong_ui(tmp, &tmp, 10, weight) < 0) {
Pablo Greco 40546a
         virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                        _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                        tmp);
Pablo Greco 40546a
@@ -868,7 +868,7 @@ virCgroupV2GetBlkioDeviceWeight(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
     if (!str) {
Pablo Greco 40546a
         *weight = 0;
Pablo Greco 40546a
-    } else if (virStrToLong_ui(str, NULL, 10, weight) < 0) {
Pablo Greco 40546a
+    } else if (virStrToLong_ui(str, &str, 10, weight) < 0) {
Pablo Greco 40546a
         virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                        _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                        str);
Pablo Greco 40546a
@@ -938,7 +938,7 @@ virCgroupV2GetBlkioDeviceReadIops(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
         if (STREQLEN(tmp, "max", 3)) {
Pablo Greco 40546a
             *riops = 0;
Pablo Greco 40546a
-        } else if (virStrToLong_ui(tmp, NULL, 10, riops) < 0) {
Pablo Greco 40546a
+        } else if (virStrToLong_ui(tmp, &tmp, 10, riops) < 0) {
Pablo Greco 40546a
             virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                            _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                            str);
Pablo Greco 40546a
@@ -1009,7 +1009,7 @@ virCgroupV2GetBlkioDeviceWriteIops(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
         if (STREQLEN(tmp, "max", 3)) {
Pablo Greco 40546a
             *wiops = 0;
Pablo Greco 40546a
-        } else if (virStrToLong_ui(tmp, NULL, 10, wiops) < 0) {
Pablo Greco 40546a
+        } else if (virStrToLong_ui(tmp, &tmp, 10, wiops) < 0) {
Pablo Greco 40546a
             virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                            _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                            str);
Pablo Greco 40546a
@@ -1080,7 +1080,7 @@ virCgroupV2GetBlkioDeviceReadBps(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
         if (STREQLEN(tmp, "max", 3)) {
Pablo Greco 40546a
             *rbps = 0;
Pablo Greco 40546a
-        } else if (virStrToLong_ull(tmp, NULL, 10, rbps) < 0) {
Pablo Greco 40546a
+        } else if (virStrToLong_ull(tmp, &tmp, 10, rbps) < 0) {
Pablo Greco 40546a
             virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                            _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                            str);
Pablo Greco 40546a
@@ -1151,7 +1151,7 @@ virCgroupV2GetBlkioDeviceWriteBps(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
         if (STREQLEN(tmp, "max", 3)) {
Pablo Greco 40546a
             *wbps = 0;
Pablo Greco 40546a
-        } else if (virStrToLong_ull(tmp, NULL, 10, wbps) < 0) {
Pablo Greco 40546a
+        } else if (virStrToLong_ull(tmp, &tmp, 10, wbps) < 0) {
Pablo Greco 40546a
             virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                            _("Unable to parse '%s' as an integer"),
Pablo Greco 40546a
                            str);
Pablo Greco 40546a
@@ -1534,7 +1534,7 @@ virCgroupV2GetCpuCfsPeriod(virCgroupPtr group,
Pablo Greco 40546a
         return -1;
Pablo Greco 40546a
     }
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (virStrToLong_ull(tmp, NULL, 10, cfs_period) < 0) {
Pablo Greco 40546a
+    if (virStrToLong_ull(tmp, &tmp, 10, cfs_period) < 0) {
Pablo Greco 40546a
         virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                        _("Failed to parse value '%s' from cpu.max."), str);
Pablo Greco 40546a
         return -1;
Pablo Greco 40546a
@@ -1584,7 +1584,7 @@ virCgroupV2GetCpuCfsQuota(virCgroupPtr group,
Pablo Greco 40546a
     if (STREQLEN(str, "max", 3))
Pablo Greco 40546a
         *cfs_quota = ULLONG_MAX / 1000;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (virStrToLong_ll(str, NULL, 10, cfs_quota) < 0) {
Pablo Greco 40546a
+    if (virStrToLong_ll(str, &str, 10, cfs_quota) < 0) {
Pablo Greco 40546a
         virReportError(VIR_ERR_INTERNAL_ERROR,
Pablo Greco 40546a
                        _("Failed to parse value '%s' from cpu.max."), str);
Pablo Greco 40546a
         return -1;
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.23.0
Pablo Greco 40546a