From: openocd-gerrit <ope...@us...> - 2024-03-09 11:04:57
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via fcda9f1561bfc413e3723e5b4552bc7e91eb4a8d (commit) from 5c395fdef42a5750852ea0fc0abd944cf303a39b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fcda9f1561bfc413e3723e5b4552bc7e91eb4a8d Author: Antonio Borneo <bor...@gm...> Date: Sun Feb 25 18:36:47 2024 +0100 gdb_server: fix segfault with GDB command 'flash-erase' Running the GDB command 'flash-erase' triggers sending the remote GDB commands 'vFlashErase' (one per flash bank) followed by one single 'vFlashDone', with no 'vFlashWrite' commands in between. This causes the field 'gdb_connection->vflash_image' to be NULL during the execution of 'vFlashDone', triggering a segmentation fault in OpenOCD. While parsing 'vFlashDone', check if any image to flash has been received. Change-Id: I443021c7a531255b60f2c44c2685e52e3c34b5c8 Signed-off-by: Antonio Borneo <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/8164 Tested-by: jenkins diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index b14068941..ae288de1c 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -3376,6 +3376,13 @@ static int gdb_v_packet(struct connection *connection, if (strncmp(packet, "vFlashDone", 10) == 0) { uint32_t written; + /* GDB command 'flash-erase' does not send a vFlashWrite, + * so nothing to write here. */ + if (!gdb_connection->vflash_image) { + gdb_put_packet(connection, "OK", 2); + return ERROR_OK; + } + /* process the flashing buffer. No need to erase as GDB * always issues a vFlashErase first. */ target_call_event_callbacks(target, ----------------------------------------------------------------------- Summary of changes: src/server/gdb_server.c | 7 +++++++ 1 file changed, 7 insertions(+) hooks/post-receive -- Main OpenOCD repository |