]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
esirisc_jtag: fix clang error core.VLASize
authorAntonio Borneo <borneo.antonio@gmail.com>
Tue, 1 Nov 2022 23:57:17 +0000 (00:57 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Fri, 11 Nov 2022 20:11:03 +0000 (20:11 +0000)
The function esirisc_jtag_recv() can be called with argument
num_in_fields = 0, for example as consequence of calling
esirisc_jtag_continue().
In this case, num_in_bytes is zero and the allocation of the
variable-length array 'r' requires size zero.

  src/target/esirisc_jtag.c:133:2: warning: Declared variable-length
    array (VLA) has zero size [core.VLASize]
        uint8_t r[num_in_bytes * 2];
        ^~~~~~~~~ ~~~~~~~~~~~~~~~~

Fix it by forcing size one when num_in_bytes is zero.

Change-Id: Id764c7b5ec4f5b3c18c7da650bbff39fc98ed049
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7301
Tested-by: jenkins
src/target/esirisc_jtag.c

index 54abc4003f2c0723f8d30193b6c15ddd21c195d1..1ec1726e5c49177b5381492c47f69254cf72512e 100644 (file)
@@ -130,7 +130,9 @@ static int esirisc_jtag_recv(struct esirisc_jtag *jtag_info,
        int num_in_bytes = DIV_ROUND_UP(num_in_bits, 8);
 
        struct scan_field fields[3];
-       uint8_t r[num_in_bytes * 2];
+       /* prevent zero-size variable length array */
+       int r_size = num_in_bytes ? num_in_bytes * 2 : 1;
+       uint8_t r[r_size];
 
        esirisc_jtag_set_instr(jtag_info, INSTR_DEBUG);