flash/stm32l4x: zero init stm32l4_flash_bank struct on flash bank initialization
authorRaúl Sanchez Siles <rasasi78@gmail.com>
Sat, 13 Mar 2021 00:09:01 +0000 (01:09 +0100)
committerTomas Vanek <vanekt@fbl.cz>
Tue, 16 Mar 2021 08:51:37 +0000 (08:51 +0000)
This is specially needed when, in the probe routine, device is not
found among the stm32l4_parts. In this case, the stm32l4_flash_bank->part_info
is undefined and inadvertentanly used afterwards:
part_info = stm32l4_info->part_info;

If the stm32l4_flash_bank is zero init, the probe routine checks for
the validity of the part_info field in the previous struct and correctly
detects the unsupported (or not found) condition, raising an error
rather than a SIGSEGV

Change-Id: I7d9d669fb3fa7f8f0903acd60046966b4acb0031
Signed-off-by: Raúl Sánchez Siles <rasasi78@gmail.com>
Reviewed-on: http://openocd.zylin.com/6103
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/flash/nor/stm32l4x.c

index 55a8d8ff3a50f341d5df1f18121e8677011f3dff..89c5ac3fe28aca757a9ca5135c764f4854257ed1 100644 (file)
@@ -439,7 +439,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32l4_flash_bank_command)
        if (CMD_ARGC < 6)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
-       stm32l4_info = malloc(sizeof(struct stm32l4_flash_bank));
+       stm32l4_info = calloc(1, sizeof(struct stm32l4_flash_bank));
        if (!stm32l4_info)
                return ERROR_FAIL; /* Checkme: What better error to use?*/
        bank->driver_priv = stm32l4_info;