[Qemu-devel] [PATCH for-2.12] tests: Silence false positive warning on generated test name

Eric Blake posted 1 patch 6 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180323204341.1501664-1-eblake@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 failed
Test s390x passed
tests/test-visitor-serialization.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH for-2.12] tests: Silence false positive warning on generated test name
Posted by Eric Blake 6 years, 1 month ago
Running 'make check' on rawhide with gcc 8.0.1 fails:

tests/test-visitor-serialization.c: In function 'main':
tests/test-visitor-serialization.c:1127:34: error: '/primitives/' directive writing 12 bytes into a region of size between 1 and 128 [-Werror=format-overflow=]

The warning is a false positive (we have two buffers of size 128,
so yes, if we FULLY used the first buffer, then sprint'ing it into
the second will overflow the second).  But in practice, our first
buffer will not be longer than "/visitor/serialization/String",
so sizing it smaller is enough to let gcc see that we don't
overflow the second.

Signed-off-by: Eric Blake <eblake@redhat.com>
---

Makes sense for me to take this through my QAPI tree, if it gets a review.

 tests/test-visitor-serialization.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/test-visitor-serialization.c b/tests/test-visitor-serialization.c
index 438c18a0d64..d18d90db2c7 100644
--- a/tests/test-visitor-serialization.c
+++ b/tests/test-visitor-serialization.c
@@ -1115,7 +1115,7 @@ static const SerializeOps visitors[] = {

 static void add_visitor_type(const SerializeOps *ops)
 {
-    char testname_prefix[128];
+    char testname_prefix[32];
     char testname[128];
     TestArgs *args;
     int i = 0;
-- 
2.14.3


Re: [Qemu-devel] [PATCH for-2.12] tests: Silence false positive warning on generated test name
Posted by Marc-André Lureau 6 years, 1 month ago
On Fri, Mar 23, 2018 at 9:43 PM, Eric Blake <eblake@redhat.com> wrote:
> Running 'make check' on rawhide with gcc 8.0.1 fails:
>
> tests/test-visitor-serialization.c: In function 'main':
> tests/test-visitor-serialization.c:1127:34: error: '/primitives/' directive writing 12 bytes into a region of size between 1 and 128 [-Werror=format-overflow=]
>
> The warning is a false positive (we have two buffers of size 128,
> so yes, if we FULLY used the first buffer, then sprint'ing it into
> the second will overflow the second).  But in practice, our first
> buffer will not be longer than "/visitor/serialization/String",
> so sizing it smaller is enough to let gcc see that we don't
> overflow the second.
>
> Signed-off-by: Eric Blake <eblake@redhat.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>
> Makes sense for me to take this through my QAPI tree, if it gets a review.
>
>  tests/test-visitor-serialization.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tests/test-visitor-serialization.c b/tests/test-visitor-serialization.c
> index 438c18a0d64..d18d90db2c7 100644
> --- a/tests/test-visitor-serialization.c
> +++ b/tests/test-visitor-serialization.c
> @@ -1115,7 +1115,7 @@ static const SerializeOps visitors[] = {
>
>  static void add_visitor_type(const SerializeOps *ops)
>  {
> -    char testname_prefix[128];
> +    char testname_prefix[32];
>      char testname[128];
>      TestArgs *args;
>      int i = 0;
> --
> 2.14.3
>
>



-- 
Marc-André Lureau