if (reg_list_size <= reg_num) {
LOG_ERROR("gdb requested a non-existing register");
- exit(-1);
+ return ERROR_SERVER_REMOTE_CLOSED;
}
if (!reg_list[reg_num]->valid)
if (retval != ERROR_OK)
return gdb_error(connection, retval);
- if (reg_list_size < reg_num) {
+ if (reg_list_size <= reg_num) {
LOG_ERROR("gdb requested a non-existing register");
return ERROR_SERVER_REMOTE_CLOSED;
}
bin_buf = malloc(DIV_ROUND_UP(reg_list[reg_num]->size, 8));
int chars = (DIV_ROUND_UP(reg_list[reg_num]->size, 8) * 2);
- /* fix!!! add some sanity checks on packet size here */
+ if ((unsigned int)chars != strlen(separator + 1)) {
+ LOG_ERROR("gdb sent a packet with wrong register size");
+ return ERROR_SERVER_REMOTE_CLOSED;
+ }
gdb_target_to_reg(target, separator + 1, chars, bin_buf);