target: fix memory leaks on target_create() fail
authorAntonio Borneo <borneo.antonio@gmail.com>
Sat, 11 Jul 2020 14:37:28 +0000 (16:37 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 8 Aug 2020 21:17:43 +0000 (22:17 +0100)
commitcd06642314c5b9b4b4c12b066fb3c17958afbe1f
treef7819fe57373509756849ca61f0b5bc76cb8e1ff
parent2f92598f0d6d8304a9c15f7050c9e888279cd2fa
target: fix memory leaks on target_create() fail

There are failure cases of target_create() that are not checked.
Plus, in case of failure the memory allocated in not properly
released before returning error.

Check all the possible failure in target_create().
Change current_target only when target is successfully created.
Add the new target to all_targets list only when target is
successfully created.
Release all the allocated memory before quit on failure.
Use malloc() instead of calloc() for target->type, because the
struct will be fully populated with memcpy().

Change-Id: Ib6f91cbb50c28878e7c73dc070b17b8d7d4e902f
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5776
Tested-by: jenkins
src/target/target.c