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(a)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