This is an automated email from Gerrit. "Antonio Borneo <[email protected]>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/9374
-- gerrit commit 6920173e72b9bf94fc642838f69ccb2c85fa0e9f Author: Antonio Borneo <[email protected]> Date: Sun Jan 4 17:40:43 2026 +0100 server: gdb_server: check for out of memory and fix a memory leak During GDB service start, check that memory is properly allocated and if add_service() fails release the allocated memory. While there, modify the code following the coding style. Change-Id: Iebd1481a82f7391c110c5f6ad9878ba4abf052b3 Signed-off-by: Antonio Borneo <[email protected]> diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index a989bda578..7b3cc21417 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -3881,12 +3881,11 @@ static const struct service_driver gdb_service_driver = { static int gdb_target_start(struct target *target, const char *port) { - struct gdb_service *gdb_service; - int ret; - gdb_service = malloc(sizeof(struct gdb_service)); - - if (!gdb_service) - return -ENOMEM; + struct gdb_service *gdb_service = malloc(sizeof(struct gdb_service)); + if (!gdb_service) { + LOG_ERROR("Out of memory"); + return ERROR_FAIL; + } LOG_TARGET_INFO(target, "starting gdb server on %s", port); @@ -3895,17 +3894,22 @@ static int gdb_target_start(struct target *target, const char *port) gdb_service->core[1] = -1; target->gdb_service = gdb_service; - ret = add_service(&gdb_service_driver, port, target->gdb_max_connections, gdb_service); + int retval = add_service(&gdb_service_driver, port, + target->gdb_max_connections, gdb_service); + if (retval != ERROR_OK) { + free(gdb_service); + return retval; + } + /* initialize all targets gdb service with the same pointer */ - { struct target_list *head; foreach_smp_target(head, target->smp_targets) { struct target *curr = head->target; if (curr != target) curr->gdb_service = gdb_service; } - } - return ret; + + return ERROR_OK; } static int gdb_target_add_one(struct target *target) --
