From 5747ea603e5b463c03cb11a921bf9025cc879ee6 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Mon, 21 Sep 2020 10:20:27 -0400 Subject: [PATCH] Fix nil pointer with revamped chosen host ID logic --- .../controller/handlers/targets/target_service.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/servers/controller/handlers/targets/target_service.go b/internal/servers/controller/handlers/targets/target_service.go index 040c18604..f039e6b9a 100644 --- a/internal/servers/controller/handlers/targets/target_service.go +++ b/internal/servers/controller/handlers/targets/target_service.go @@ -310,11 +310,11 @@ HostSetIterationLoop: } for _, host := range hosts { compoundId := compoundHost{hostSetId: hsId, hostId: host.PublicId} + hostIds = append(hostIds, compoundId) if host.PublicId == requestedId { chosenId = &compoundId break HostSetIterationLoop } - hostIds = append(hostIds, compoundId) } } } @@ -326,7 +326,13 @@ HostSetIterationLoop: "host_id": "The requested host id is not available.", }) } - chosenId = &hostIds[rand.Intn(len(hostIds))] + if chosenId == nil { + if len(hostIds) == 0 { + // No hosts were found, error + return nil, handlers.NotFoundErrorf("No hosts found from available target host sets.") + } + chosenId = &hostIds[rand.Intn(len(hostIds))] + } // Generate the endpoint URL endpointUrl := &url.URL{