From 245e8fff3b2bc662640b47471d516168c4bdb6e0 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 6 Jan 2014 21:36:21 +0400 Subject: [PATCH] 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 --- src/server/gdb_server.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 6729df3a3..91016e424 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);