From 54beb671469d9df80efac763a2422ff1ab7c3dce Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 30 Oct 2024 11:10:04 +0000 Subject: [PATCH 1/3] fix(provisionerdserver): prevent NPE if no user link exists --- coderd/provisionerdserver/provisionerdserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index 0a4198423e403..fa5b7753df502 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, nil //nolint:nilnil } if err != nil { return "", xerrors.Errorf("get owner oidc link: %w", err) From c1d387429e11f41475767dfb64874f9ce4c5f971 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 30 Oct 2024 11:14:31 +0000 Subject: [PATCH 2/3] fixup! fix(provisionerdserver): prevent NPE if no user link exists --- coderd/provisionerdserver/provisionerdserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index fa5b7753df502..1f97863e7802b 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) { - return nil, nil //nolint:nilnil + return "", nil } if err != nil { return "", xerrors.Errorf("get owner oidc link: %w", err) From 50cf7b4ccfd20328dd9002576ad784a925e17698 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 30 Oct 2024 11:29:00 +0000 Subject: [PATCH 3/3] add test --- .../provisionerdserver_internal_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/coderd/provisionerdserver/provisionerdserver_internal_test.go b/coderd/provisionerdserver/provisionerdserver_internal_test.go index acf9508307070..eb616eb4c2795 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()