[PATCH 2/3] tests: Don't pass INT_MAX to virFileReadAll()

Michal Privoznik mprivozn at redhat.com
Mon Jun 14 11:06:13 UTC 2021


In a few occasions in tests we pass INT_MAX to
virFileReadLimFD(). This is not safe because virFileReadAll()
will call virFileReadLimFD() under the hood which takes the limit
and adds 1 to it. And since we use signed integer for all of this
an overflow will occur.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 tests/networkxml2firewalltest.c | 2 +-
 tests/testutils.c               | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/networkxml2firewalltest.c b/tests/networkxml2firewalltest.c
index 91336a0c55..facbc20a0c 100644
--- a/tests/networkxml2firewalltest.c
+++ b/tests/networkxml2firewalltest.c
@@ -176,7 +176,7 @@ mymain(void)
 
     basefile = g_strdup_printf("%s/networkxml2firewalldata/base.args", abs_srcdir);
 
-    if (virFileReadAll(basefile, INT_MAX, &baseargs) < 0)
+    if (virFileReadAll(basefile, INT_MAX - 1, &baseargs) < 0)
         return EXIT_FAILURE;
 
     DO_TEST("nat-default");
diff --git a/tests/testutils.c b/tests/testutils.c
index eb3bd48b6a..4a63c6cc37 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -313,7 +313,7 @@ virTestLoadFileJSON(const char *p, ...)
     if (!(path = virTestLoadFileGetPath(p, ap)))
         goto cleanup;
 
-    if (virFileReadAll(path, INT_MAX, &jsonstr) < 0)
+    if (virFileReadAll(path, INT_MAX - 1, &jsonstr) < 0)
         goto cleanup;
 
     if (!(ret = virJSONValueFromString(jsonstr)))
@@ -562,7 +562,7 @@ virTestCompareToFileFull(const char *actual,
         if (virTestLoadFile(filename, &filecontent) < 0 && !virTestGetRegenerate())
             return -1;
     } else {
-        if (virFileReadAll(filename, INT_MAX, &filecontent) < 0 && !virTestGetRegenerate())
+        if (virFileReadAll(filename, INT_MAX - 1, &filecontent) < 0 && !virTestGetRegenerate())
             return -1;
     }
 
-- 
2.31.1




More information about the libvir-list mailing list