From: Ville Syrjälä <ville.syrj...@linux.intel.com>

../src/sna/kgem_debug_gen3.c:1289:50: warning: ‘%03d’ directive writing between 
3 and 10 bytes into a region of size 8 [-Wformat-overflow=]
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                                                  ^~~~
../src/sna/kgem_debug_gen3.c:1289:47: note: directive argument in the range [0, 
1431655764]
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                                               ^~~~~~~~
../src/sna/kgem_debug_gen3.c:1289:25: note: ‘sprintf’ output between 6 and 13 
bytes into a destination of size 10
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The compiler is utterly wrong here of course since 'instr'
will at most be (0x1ff + 2 - 1) / 3 ~= 170 (though the hardware
defined max is actually only 123). But let's bump the buffer
size a little bit to shut the compiler up.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 src/sna/kgem_debug_gen3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sna/kgem_debug_gen3.c b/src/sna/kgem_debug_gen3.c
index 4a7b1aaaeafa..a52ee61d23f8 100644
--- a/src/sna/kgem_debug_gen3.c
+++ b/src/sna/kgem_debug_gen3.c
@@ -1284,7 +1284,7 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
                assert(len <= 370);
                i = 1;
                for (instr = 0; instr < (len - 1) / 3; instr++) {
-                       char instr_prefix[10];
+                       char instr_prefix[13];
 
                        sprintf(instr_prefix, "PS%03d", instr);
                        gen3_decode_instruction(data, offset, i, instr_prefix);
-- 
2.39.2

Reply via email to