From: Paul Fertser Date: Mon, 6 Jan 2014 17:36:21 +0000 (+0400) Subject: gdb_server: check for invalid read memory requests X-Git-Tag: v0.8.0-rc1~111 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=245e8fff3b2bc662640b47471d516168c4bdb6e0 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 Reviewed-on: http://openocd.zylin.com/1853 Tested-by: jenkins Reviewed-by: Spencer Oliver --- diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 6729df3a33..91016e4243 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -1352,6 +1352,12 @@ static int gdb_read_memory_packet(struct connection *connection, 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); LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);