From 36ff24c30177c560b30566df875466fda080daab Mon Sep 17 00:00:00 2001 From: andres-portainer <91705312+andres-portainer@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:17:51 -0300 Subject: [PATCH] fix(endpointgroups): fix a nil pointer dereference error in deleteEndpointGroup BE-12510 (#1599) --- .../endpointgroups/endpointgroup_delete.go | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/api/http/handler/endpointgroups/endpointgroup_delete.go b/api/http/handler/endpointgroups/endpointgroup_delete.go index 974771bad3..9d6cddfc0a 100644 --- a/api/http/handler/endpointgroups/endpointgroup_delete.go +++ b/api/http/handler/endpointgroups/endpointgroup_delete.go @@ -49,8 +49,7 @@ func (handler *Handler) deleteEndpointGroup(tx dataservices.DataStoreTx, endpoin return httperror.InternalServerError("Unable to find an environment group with the specified identifier inside the database", err) } - err = tx.EndpointGroup().Delete(endpointGroupID) - if err != nil { + if err := tx.EndpointGroup().Delete(endpointGroupID); err != nil { return httperror.InternalServerError("Unable to remove the environment group from the database", err) } @@ -60,30 +59,29 @@ func (handler *Handler) deleteEndpointGroup(tx dataservices.DataStoreTx, endpoin } for _, endpoint := range endpoints { - if endpoint.GroupID == endpointGroupID { - endpoint.GroupID = portainer.EndpointGroupID(1) - err = tx.Endpoint().UpdateEndpoint(endpoint.ID, &endpoint) - if err != nil { - return httperror.InternalServerError("Unable to update environment", err) - } + if endpoint.GroupID != endpointGroupID { + continue + } - err = handler.updateEndpointRelations(tx, &endpoint, nil) - if err != nil { - return httperror.InternalServerError("Unable to persist environment relations changes inside the database", err) - } + endpoint.GroupID = portainer.EndpointGroupID(1) + if err := tx.Endpoint().UpdateEndpoint(endpoint.ID, &endpoint); err != nil { + return httperror.InternalServerError("Unable to update environment", err) + } + + if err := handler.updateEndpointRelations(tx, &endpoint, nil); err != nil { + return httperror.InternalServerError("Unable to persist environment relations changes inside the database", err) } } for _, tagID := range endpointGroup.TagIDs { tag, err := tx.Tag().Read(tagID) - if tx.IsErrObjectNotFound(err) { + if err != nil { return httperror.InternalServerError("Unable to find a tag inside the database", err) } delete(tag.EndpointGroups, endpointGroup.ID) - err = tx.Tag().Update(tagID, tag) - if err != nil { + if err := tx.Tag().Update(tagID, tag); err != nil { return httperror.InternalServerError("Unable to persist tag changes inside the database", err) } }