Skip to content

Commit 087323f

Browse files
committed
chore: reject non-UUID OAuth client states
1 parent 2bcda6d commit 087323f

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

internal/api/external.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,11 @@ func (a *API) loadExternalState(ctx context.Context, r *http.Request, db *storag
580580
ctx = withFlowStateID(ctx, claims.FlowStateID)
581581
}
582582
if claims.OAuthClientStateID != "" {
583-
ctx = withOAuthClientStateID(ctx, uuid.FromStringOrNil(claims.OAuthClientStateID))
583+
oauthClientStateID, err := uuid.FromString(claims.OAuthClientStateID)
584+
if err != nil {
585+
return nil, apierrors.NewBadRequestError(apierrors.ErrorCodeBadOAuthState, "OAuth callback with invalid state (oauth_client_state_id must be UUID)")
586+
}
587+
ctx = withOAuthClientStateID(ctx, oauthClientStateID)
584588
}
585589
if claims.LinkingTargetID != "" {
586590
linkingTargetUserID, err := uuid.FromString(claims.LinkingTargetID)

0 commit comments

Comments
 (0)