target: fix registers reading from non examined target

If a target is not examined when the debugger tries to connect to it
then it can lead to undesired/undefined behavior.

In particular it leads to a zero pointer dereference on the aarch64.


Change-Id: I67f2b714ab8b2727fd36f3de16d7f9017b4c55fe
Signed-off-by: Mikhail Rasputin <mikhail.godlike.rasputin@yandex.ru>
Reviewed-on: http://openocd.zylin.com/5727
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Mikhail Rasputin 2020-06-27 23:30:42 +03:00 committed by Antonio Borneo
parent 86777768eb
commit 6d45e485f9
1 changed files with 10 additions and 1 deletions

View File

@ -1224,8 +1224,17 @@ int target_get_gdb_reg_list(struct target *target,
struct reg **reg_list[], int *reg_list_size,
enum target_register_class reg_class)
{
int result = target->type->get_gdb_reg_list(target, reg_list,
int result = ERROR_FAIL;
if (!target_was_examined(target)) {
LOG_ERROR("Target not examined yet");
goto done;
}
result = target->type->get_gdb_reg_list(target, reg_list,
reg_list_size, reg_class);
done:
if (result != ERROR_OK) {
*reg_list = NULL;
*reg_list_size = 0;