Fix GCC7 warnings about string truncation
authorFreddie Chopin <freddie.chopin@gmail.com>
Thu, 29 Jun 2017 21:49:03 +0000 (23:49 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Mon, 23 Oct 2017 09:54:24 +0000 (10:54 +0100)
GCC7 with -Wall warns about possible string truncation with
snprint()-type functions with "directive output may be truncated writing
1 byte into a region of size between 0 and 9
[-Werror=format-truncation=]" + "note: ‘snprintf’ output between 5 and
14 bytes into a destination of size 12" (or similar). Fix this by
increasing sizes of buffers.

See https://gcc.gnu.org/gcc-7/changes.html

Change-Id: Ib848f2a56dd658783534158947ae1be7c0e99d45
Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com>
Reviewed-on: http://openocd.zylin.com/4175
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Tested-by: jenkins
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
src/flash/nor/kinetis.c
src/flash/nor/xmc4xxx.c
src/target/arm_adi_v5.c
src/target/nds32_cmd.c

index 455e7b1b08a0324e663a2622bf91c6e799953009..5c0ffbd6f6f205196608fc0cae01346607f7123c 100644 (file)
@@ -1959,7 +1959,7 @@ static int kinetis_probe_chip(struct kinetis_chip *k_chip)
        unsigned cpu_mhz = 120;
        unsigned idx;
        bool use_nvm_marking = false;
-       char flash_marking[8], nvm_marking[2];
+       char flash_marking[11], nvm_marking[2];
        char name[40];
 
        k_chip->probed = false;
index 02df46a3fd2444a3c0ec4b9d94bea5eb8daea459..5677ef0f1634a7c2d853ea79942a63ab088d8a8d 100644 (file)
@@ -931,13 +931,13 @@ static int xmc4xxx_get_info_command(struct flash_bank *bank, char *buf, int buf_
 
        /* If OTP Write protection is enabled (User 2), list each
         * sector that has it enabled */
-       char otp_str[8];
+       char otp_str[14];
        if (otp_enabled) {
                strcat(prot_str, "\nOTP Protection is enabled for sectors:\n");
                for (int i = 0; i < bank->num_sectors; i++) {
                        if (fb->write_prot_otp[i]) {
                                snprintf(otp_str, sizeof(otp_str), "- %d\n", i);
-                               strncat(prot_str, otp_str, ARRAY_SIZE(otp_str));
+                               strncat(prot_str, otp_str, sizeof(prot_str) - strlen(prot_str) - 1);
                        }
                }
        }
index 88491196d3d22371141d9abc163f9b5046f096ed..2006290237eda467361c12a66bc1253a65135e94 100644 (file)
@@ -1059,7 +1059,7 @@ static int dap_rom_display(struct command_context *cmd_ctx,
        int retval;
        uint64_t pid;
        uint32_t cid;
-       char tabs[7] = "";
+       char tabs[16] = "";
 
        if (depth > 16) {
                command_print(cmd_ctx, "\tTables too deep");
index edb4872e4905f7bc68e0de40030a759d24958ed0..500651dbc835fe6cb2a4b28e9383cfd6414f8467 100644 (file)
@@ -816,7 +816,7 @@ static int jim_nds32_bulk_read(Jim_Interp *interp, int argc, Jim_Obj * const *ar
        uint32_t *data = malloc(count * sizeof(uint32_t));
        int result;
        result = target_read_buffer(target, address, count * 4, (uint8_t *)data);
-       char data_str[11];
+       char data_str[12];
 
        jim_wide i;
        Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));