From 69fad895a73ab4065d155dc3ac4b072f601a3f8b Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 6 Oct 2022 13:48:01 +0200 Subject: [PATCH 1/4] fix: accept DSN URLs with empty password --- packages/utils/src/dsn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/src/dsn.ts b/packages/utils/src/dsn.ts index a364c47d5d6b..6e82470d0d00 100644 --- a/packages/utils/src/dsn.ts +++ b/packages/utils/src/dsn.ts @@ -3,7 +3,7 @@ import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types'; import { SentryError } from './error'; /** Regular expression used to parse a Dsn. */ -const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w.-]+)(?::(\d+))?\/(.+)/; +const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)*)?@)([\w.-]+)(?::(\d+))?\/(.+)/; function isValidProtocol(protocol?: string): protocol is DsnProtocol { return protocol === 'http' || protocol === 'https'; From 81b76c867c7d350db3ecaedc5892157421d79e29 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 6 Oct 2022 13:49:12 +0200 Subject: [PATCH 2/4] Update dsn.test.ts --- packages/utils/test/dsn.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/utils/test/dsn.test.ts b/packages/utils/test/dsn.test.ts index c9088c878e18..938f328cab4e 100644 --- a/packages/utils/test/dsn.test.ts +++ b/packages/utils/test/dsn.test.ts @@ -119,6 +119,17 @@ describe('Dsn', () => { expect(dsn.path).toBe('123'); expect(dsn.projectId).toBe('321'); }); + + test('parses a Dsn with empty password', () => { + const dsn = makeDsn('https://abc:@sentry.io/123/321'); + expect(dsn.protocol).toBe('https'); + expect(dsn.publicKey).toBe('abc'); + expect(dsn.pass).toBe(''); + expect(dsn.host).toBe('sentry.io'); + expect(dsn.port).toBe(''); + expect(dsn.path).toBe('123'); + expect(dsn.projectId).toBe('321'); + }); test('with a long path', () => { const dsn = makeDsn('https://abc@sentry.io/sentry/custom/installation/321'); From cbf85daf8b686e40d7e3d46b8181c2df1b029f29 Mon Sep 17 00:00:00 2001 From: Jonas Kruckenberg Date: Thu, 6 Oct 2022 14:44:23 +0200 Subject: [PATCH 3/4] Update packages/utils/src/dsn.ts Co-authored-by: Lukas Stracke --- packages/utils/src/dsn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/src/dsn.ts b/packages/utils/src/dsn.ts index 6e82470d0d00..d6dd4a7da2b7 100644 --- a/packages/utils/src/dsn.ts +++ b/packages/utils/src/dsn.ts @@ -3,7 +3,7 @@ import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types'; import { SentryError } from './error'; /** Regular expression used to parse a Dsn. */ -const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)*)?@)([\w.-]+)(?::(\d+))?\/(.+)/; +const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/; function isValidProtocol(protocol?: string): protocol is DsnProtocol { return protocol === 'http' || protocol === 'https'; From cb72095369eac995bcefa3909c2836083c61d32a Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Fri, 7 Oct 2022 10:40:03 +0200 Subject: [PATCH 4/4] run yarn fix --- packages/utils/test/dsn.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/test/dsn.test.ts b/packages/utils/test/dsn.test.ts index 938f328cab4e..3a5bb3e7da6c 100644 --- a/packages/utils/test/dsn.test.ts +++ b/packages/utils/test/dsn.test.ts @@ -119,7 +119,7 @@ describe('Dsn', () => { expect(dsn.path).toBe('123'); expect(dsn.projectId).toBe('321'); }); - + test('parses a Dsn with empty password', () => { const dsn = makeDsn('https://abc:@sentry.io/123/321'); expect(dsn.protocol).toBe('https');