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

Tim Wiederhake twiederh at redhat.com
Mon Jun 14 11:31:50 UTC 2021


On Mon, 2021-06-14 at 13:06 +0200, Michal Privoznik wrote:
> 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.

Calling virFileReadAll with "INT_MAX - 1" looks funny. Is it possible
to check for "maxlen >= INT_MAX" in virFileReadLimFD instead?

>  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;
>      }
>  





More information about the libvir-list mailing list