gdb_server: check for invalid read memory requests

This prevents invalid free(NULL) (that crashes OpenOCD on desktop
distros).

With radare2 it's now a bit more useful, memory access works if I seek
to the correct address, can't test further as it apparently lacks thumb2
support.

Change-Id: I6ec32d09fd52dab53ba765d7f7519baa1f55d973
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/1853
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
Paul Fertser 2014-01-06 21:36:21 +04:00 committed by Spencer Oliver
parent 63fa73169b
commit 245e8fff3b
1 changed files with 6 additions and 0 deletions

View File

@ -1352,6 +1352,12 @@ static int gdb_read_memory_packet(struct connection *connection,
len = strtoul(separator + 1, NULL, 16); len = strtoul(separator + 1, NULL, 16);
if (!len) {
LOG_WARNING("invalid read memory packet received (len == 0)");
gdb_put_packet(connection, NULL, 0);
return ERROR_OK;
}
buffer = malloc(len); buffer = malloc(len);
LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len); LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);