stm32lx: don't allow part_info to be uninitialized
authorAndrey Yurovsky <yurovsky@gmail.com>
Thu, 28 Aug 2014 18:54:29 +0000 (11:54 -0700)
committerSpencer Oliver <spen@spen-soft.co.uk>
Mon, 15 Sep 2014 08:23:12 +0000 (08:23 +0000)
It's possible for us to fail to read the part ID code so make sure that
part_info is initialized to NULL before attempting to do so, otherwise
we could proceed and use it uninitialized and then segfault.

Change-Id: I0a3f3d3947690b66f0981b5046340449521e0b33
Signed-off-by: Jack Peel <jack.peel@synapse.com>
Signed-off-by: Andrey Yurovsky <yurovsky@gmail.com>
Reviewed-on: http://openocd.zylin.com/2276
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/flash/nor/stm32lx.c

index f7074c3eea18ffe58597cff912b1ebc0af4a7f1e..dc1a0c40c27aa5edef686b1fbba2dc0361c0597e 100644 (file)
@@ -214,7 +214,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32lx_flash_bank_command)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        /* Create the bank structure */
-       stm32lx_info = malloc(sizeof(struct stm32lx_flash_bank));
+       stm32lx_info = calloc(1, sizeof(*stm32lx_info));
 
        /* Check allocation */
        if (stm32lx_info == NULL) {
@@ -624,6 +624,7 @@ static int stm32lx_probe(struct flash_bank *bank)
        uint32_t second_bank_base;
 
        stm32lx_info->probed = 0;
+       stm32lx_info->part_info = NULL;
 
        int retval = stm32lx_read_id_code(bank->target, &device_id);
        if (retval != ERROR_OK)