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:
parent
63fa73169b
commit
245e8fff3b
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue