diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-05-19 19:02:36 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-05-19 19:02:36 +0000 |
commit | 05d143857ccadfa2ab3a9bf11461482f8e3a53b7 (patch) | |
tree | 74d470eae70edac2e4cb4836d3a88770bc1a9dc7 /src/target/armv4_5.c | |
parent | a76c3433e1720a5e1d503c51c5b68e2884cf7522 (diff) |
Fix crash when mode number fetched from the target is invalid.
git-svn-id: svn://svn.berlios.de/openocd/trunk@667 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/armv4_5.c')
-rw-r--r-- | src/target/armv4_5.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index 264a4437..e546e404 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -329,6 +329,9 @@ int handle_armv4_5_reg_command(struct command_context_s *cmd_ctx, char *cmd, cha return ERROR_OK; } + if (armv4_5_mode_to_number(armv4_5->core_mode)==-1) + return ERROR_FAIL; + for (num = 0; num <= 15; num++) { output_len = 0; @@ -441,6 +444,9 @@ int armv4_5_get_gdb_reg_list(target_t *target, reg_t **reg_list[], int *reg_list armv4_5_common_t *armv4_5 = target->arch_info; int i; + if (armv4_5_mode_to_number(armv4_5->core_mode)==-1) + return ERROR_FAIL; + *reg_list_size = 26; *reg_list = malloc(sizeof(reg_t*) * (*reg_list_size)); @@ -485,6 +491,9 @@ int armv4_5_run_algorithm(struct target_s *target, int num_mem_params, mem_param return ERROR_TARGET_NOT_HALTED; } + if (armv4_5_mode_to_number(armv4_5->core_mode)==-1) + return ERROR_FAIL; + for (i = 0; i <= 16; i++) { if (!ARMV4_5_CORE_REG_MODE(armv4_5->core_cache, armv4_5_algorithm_info->core_mode, i).valid) |