From 591cefa4286d494ecc3ed70364e7b3d9360db1ab Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 30 Oct 2024 19:16:59 +0000 Subject: [PATCH] fix(coderd/provisionerdserver): prevent NPE if no user link exists (#15289) --- coderd/provisionerdserver/provisionerdserver.go | 2 +- .../provisionerdserver_internal_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index 0a4198423e..1f97863e78 100644 --- a/coderd/provisionerdserver/provisionerdserver.go +++ b/coderd/provisionerdserver/provisionerdserver.go @@ -2026,7 +2026,7 @@ func obtainOIDCAccessToken(ctx context.Context, db database.Store, oidcConfig pr LoginType: database.LoginTypeOIDC, }) if errors.Is(err, sql.ErrNoRows) { - err = nil + return "", nil } if err != nil { return "", xerrors.Errorf("get owner oidc link: %w", err) diff --git a/coderd/provisionerdserver/provisionerdserver_internal_test.go b/coderd/provisionerdserver/provisionerdserver_internal_test.go index acf9508307..eb616eb4c2 100644 --- a/coderd/provisionerdserver/provisionerdserver_internal_test.go +++ b/coderd/provisionerdserver/provisionerdserver_internal_test.go @@ -38,6 +38,16 @@ func TestObtainOIDCAccessToken(t *testing.T) { _, err := obtainOIDCAccessToken(ctx, db, &oauth2.Config{}, user.ID) require.NoError(t, err) }) + t.Run("MissingLink", func(t *testing.T) { + t.Parallel() + db := dbmem.New() + user := dbgen.User(t, db, database.User{ + LoginType: database.LoginTypeOIDC, + }) + tok, err := obtainOIDCAccessToken(ctx, db, &oauth2.Config{}, user.ID) + require.Empty(t, tok) + require.NoError(t, err) + }) t.Run("Exchange", func(t *testing.T) { t.Parallel() db := dbmem.New()