This is an automated email from Gerrit. "Antonio Borneo <borneo.anto...@gmail.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8164
-- gerrit commit 7d45150a08c328297351a8866de3832a3fecc7e4 Author: Antonio Borneo <borneo.anto...@gmail.com> 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 <borneo.anto...@gmail.com> diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 13bc233957..afe84abe8b 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -3379,6 +3379,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, --