From 2fd995becb0b5f3468f0ae0dbc4ff8c965e70dac Mon Sep 17 00:00:00 2001 From: Paul Lorenz Date: Thu, 9 Sep 2021 11:18:19 -0400 Subject: [PATCH] Fix panic if posture data mfa is nil --- controller/internal/routes/posture_response_router.go | 5 +++-- controller/model/posture_response_model.go | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/controller/internal/routes/posture_response_router.go b/controller/internal/routes/posture_response_router.go index 6036c2235..c5566463c 100644 --- a/controller/internal/routes/posture_response_router.go +++ b/controller/internal/routes/posture_response_router.go @@ -91,9 +91,10 @@ func (r *PostureResponseRouter) CreateBulk(ae *env.AppEnv, rc *response.RequestC postureData := ae.Handlers.PostureResponse.PostureData(rc.Identity.Id) if postureData != nil && postureData.ApiSessions != nil { - if apiPostureData, ok := postureData.ApiSessions[rc.ApiSession.Id]; ok && apiPostureData.Mfa.PassedMfaAt != nil { + apiPostureData := postureData.ApiSessions[rc.ApiSession.Id] + if passedMfaAt := apiPostureData.GetPassedMfaAt(); passedMfaAt != nil { //if the last time Mfa was passed at is outside of the grace period, send timeout update - durationSinceLastMfa := time.Now().Sub(*apiPostureData.Mfa.PassedMfaAt) + durationSinceLastMfa := time.Now().Sub(*passedMfaAt) modelServicesWithTimeouts := ae.Handlers.PostureResponse.GetEndpointStateChangeAffectedServices(durationSinceLastMfa, gracePeriod, onWake, onUnlock) diff --git a/controller/model/posture_response_model.go b/controller/model/posture_response_model.go index 402414733..7832fc8f9 100644 --- a/controller/model/posture_response_model.go +++ b/controller/model/posture_response_model.go @@ -388,6 +388,13 @@ type ApiSessionPostureData struct { SdkInfo *SdkInfo } +func (self *ApiSessionPostureData) GetPassedMfaAt() *time.Time { + if self == nil || self.Mfa == nil { + return nil + } + return self.Mfa.PassedMfaAt +} + type PostureCheckFailureSubType interface { Value() interface{} Expected() interface{}