tests: ext_image_dma_buf_import: gcc complains about possibly uninitialized value due to alloca
tests/spec/ext_image_dma_buf_import/missing_attributes.c
111: const unsigned char *pixels = alloca(w * h * cpp);
tests/spec/ext_image_dma_buf_import/invalid_hints.c
103: const unsigned char *pixels = alloca(w * h * cpp);
tests/spec/ext_image_dma_buf_import/unsupported_format.c
68: const unsigned char *pixels = alloca(w * h * cpp);
tests/spec/ext_image_dma_buf_import/ownership_transfer.c
119: const unsigned char *pixels = alloca(w * h * cpp);
tests/spec/ext_image_dma_buf_import/invalid_attributes.c
222: const unsigned char *pixels = alloca(w * h * cpp);
tests/spec/ext_image_dma_buf_import/intel_external_sampler_only.c
104: const unsigned char *pixels = alloca(w * h * cpp);
while GCC complains only about
[5/6] Building C object target_api/gles1/tests/spec/...import-missing_attributes.dir/missing_attributes.c.o
/home/okias/projects/collabora/piglit/tests/spec/ext_image_dma_buf_import/missing_attributes.c: In function ‘piglit_display’:
/home/okias/projects/collabora/piglit/tests/spec/ext_image_dma_buf_import/missing_attributes.c:121:15: warning: ‘pixels’ may be used uninitialized [-Wmaybe-uninitialized]
121 | res = piglit_create_dma_buf(w, h, fourcc, pixels, &buf);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/okias/projects/collabora/piglit/tests/util/piglit-util-gl.h:42,
from /home/okias/projects/collabora/piglit/tests/spec/ext_image_dma_buf_import/image_common.h:38,
from /home/okias/projects/collabora/piglit/tests/spec/ext_image_dma_buf_import/missing_attributes.c:26:
/home/okias/projects/collabora/piglit/tests/util/piglit-framework-gl.h:342:1: note: by argument 4 of type ‘const void *’ to ‘piglit_create_dma_buf’ declared here
342 | piglit_create_dma_buf(unsigned w, unsigned h, unsigned fourcc,
| ^~~~~~~~~~~~~~~~~~~~~
This patch helps, but I'm not sure, why it wouldn't make sense to patch all functions using pixels
allocated by alloca.
commit bfe3f9ef3c81842cd9627ad0fa595d9be9b20bcf (HEAD -> cmake-clean)
Author: David Heidelberg <david.heidelberg@collabora.com>
Date: Sun Mar 31 23:35:37 2024 +0200
tests: ext_image_dma_buf_import: mark alloca unitialized warning as acked
Since alloca can fail, there is risk of passing unitialized variable here.
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
diff --git a/tests/spec/ext_image_dma_buf_import/missing_attributes.c b/tests/spec/ext_image_dma_buf_import/missing_attributes.c
index 3cfaca38f..e5f068e00 100644
--- a/tests/spec/ext_image_dma_buf_import/missing_attributes.c
+++ b/tests/spec/ext_image_dma_buf_import/missing_attributes.c
@@ -115,7 +115,10 @@ piglit_display(void)
enum piglit_result res;
bool pass = true;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
res = piglit_create_dma_buf(w, h, fourcc, pixels, &buf);
+#pragma GCC diagnostic pop
if (res != PIGLIT_PASS)
return res;
/cc @jvesely @jrfonseca # back to 2014 60f5f276