diff --git a/gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs b/gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs
index 523ea83a..8a2a228e 100644
--- a/gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs
+++ b/gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs
@@ -456,7 +456,7 @@ public partial class OpenIddictClientWebIntegrationConfiguration
///
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictClientWebIntegrationOptions.{{ provider.name }} options)
+ public void PostConfigure(string? name, OpenIddictClientWebIntegrationOptions.{{ provider.name }} options)
{
{{~ for setting in provider.settings ~}}
{{~ if setting.default_value && setting.type == 'String' ~}}
diff --git a/src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs b/src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
index 73ac83d2..8ebb94f1 100644
--- a/src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
+++ b/src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
@@ -176,7 +176,7 @@ public static class OpenIddictExtensions
}
var segment = Trim(new StringSegment(request.ResponseType), Separators.Space);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
return false;
}
@@ -203,7 +203,7 @@ public static class OpenIddictExtensions
}
var segment = Trim(new StringSegment(request.ResponseType), Separators.Space);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
return false;
}
@@ -235,7 +235,7 @@ public static class OpenIddictExtensions
foreach (var element in new StringTokenizer(request.ResponseType, Separators.Space))
{
var segment = Trim(element, Separators.Space);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}
@@ -289,7 +289,7 @@ public static class OpenIddictExtensions
foreach (var element in new StringTokenizer(request.ResponseType, Separators.Space))
{
var segment = Trim(element, Separators.Space);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}
@@ -2922,7 +2922,7 @@ public static class OpenIddictExtensions
foreach (var element in new StringTokenizer(source, separators))
{
var segment = Trim(element, separators);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}
@@ -2951,7 +2951,7 @@ public static class OpenIddictExtensions
foreach (var element in new StringTokenizer(source, separators))
{
var segment = Trim(element, separators);
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}
@@ -2969,6 +2969,11 @@ public static class OpenIddictExtensions
{
Debug.Assert(separators is { Length: > 0 }, SR.GetResourceString(SR.ID4001));
+ if (!segment.HasValue || segment.Length is 0)
+ {
+ return segment;
+ }
+
var index = segment.Offset;
while (index < segment.Offset + segment.Length)
@@ -2988,6 +2993,11 @@ public static class OpenIddictExtensions
{
Debug.Assert(separators is { Length: > 0 }, SR.GetResourceString(SR.ID4001));
+ if (!segment.HasValue || segment.Length is 0)
+ {
+ return segment;
+ }
+
var index = segment.Offset + segment.Length - 1;
while (index >= segment.Offset)
diff --git a/src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs b/src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs
index 349ae54f..277e61d6 100644
--- a/src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs
+++ b/src/OpenIddict.Client.AspNetCore/OpenIddictClientAspNetCoreConfiguration.cs
@@ -53,7 +53,7 @@ public class OpenIddictClientAspNetCoreConfiguration : IConfigureOptions
/// The authentication scheme associated with the handler instance.
/// The options instance to initialize.
- public void PostConfigure(string name, AuthenticationOptions options)
+ public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs b/src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs
index 40c60ead..75b4b2ac 100644
--- a/src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs
+++ b/src/OpenIddict.Client.DataProtection/OpenIddictClientDataProtectionConfiguration.cs
@@ -41,7 +41,7 @@ public class OpenIddictClientDataProtectionConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictClientDataProtectionOptions options)
+ public void PostConfigure(string? name, OpenIddictClientDataProtectionOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs b/src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs
index 77fff3b6..33a157e9 100644
--- a/src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs
+++ b/src/OpenIddict.Client.Owin/OpenIddictClientOwinConfiguration.cs
@@ -25,7 +25,7 @@ public class OpenIddictClientOwinConfiguration : IConfigureOptions Configure(Options.DefaultName, options);
- public void Configure(string name, HttpClientFactoryOptions options)
+ public void Configure(string? name, HttpClientFactoryOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Client/OpenIddictClientConfiguration.cs b/src/OpenIddict.Client/OpenIddictClientConfiguration.cs
index cafd67a6..ef841b56 100644
--- a/src/OpenIddict.Client/OpenIddictClientConfiguration.cs
+++ b/src/OpenIddict.Client/OpenIddictClientConfiguration.cs
@@ -27,7 +27,7 @@ public class OpenIddictClientConfiguration : IPostConfigureOptions
/// The authentication scheme associated with the handler instance.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictClientOptions options)
+ public void PostConfigure(string? name, OpenIddictClientOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs b/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs
index 9545ab36..76b043cc 100644
--- a/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs
+++ b/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs
@@ -54,7 +54,7 @@ public class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, AuthenticationOptions options)
+ public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)
{
@@ -89,7 +89,7 @@ public class OpenIddictServerAspNetCoreConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictServerAspNetCoreOptions options)
+ public void PostConfigure(string? name, OpenIddictServerAspNetCoreOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs b/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
index 6a62dd43..e30763eb 100644
--- a/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
+++ b/src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
@@ -737,7 +737,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
var request = context.Transaction.GetHttpRequest() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
- string header = request.Headers[HeaderNames.Authorization];
+ string? header = request.Headers[HeaderNames.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
{
return default;
@@ -836,7 +836,7 @@ public static partial class OpenIddictServerAspNetCoreHandlers
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID4008));
- string header = request.Headers[HeaderNames.Authorization];
+ string? header = request.Headers[HeaderNames.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
return default;
diff --git a/src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs b/src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs
index 27f05bd0..05c8996d 100644
--- a/src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs
+++ b/src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionConfiguration.cs
@@ -41,7 +41,7 @@ public class OpenIddictServerDataProtectionConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictServerDataProtectionOptions options)
+ public void PostConfigure(string? name, OpenIddictServerDataProtectionOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs b/src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs
index cf15a8c2..f6d28791 100644
--- a/src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs
+++ b/src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs
@@ -25,7 +25,7 @@ public class OpenIddictServerOwinConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictServerOptions options)
+ public void PostConfigure(string? name, OpenIddictServerOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs b/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs
index 404515e5..cae5db67 100644
--- a/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs
+++ b/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs
@@ -53,7 +53,7 @@ public class OpenIddictValidationAspNetCoreConfiguration : IConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, AuthenticationOptions options)
+ public void PostConfigure(string? name, AuthenticationOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs b/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
index bf688229..43eec9e5 100644
--- a/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
+++ b/src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
@@ -160,7 +160,7 @@ public static partial class OpenIddictValidationAspNetCoreHandlers
// Resolve the access token from the standard Authorization header.
// See https://tools.ietf.org/html/rfc6750#section-2.1 for more information.
- string header = request.Headers[HeaderNames.Authorization];
+ string? header = request.Headers[HeaderNames.Authorization];
if (!string.IsNullOrEmpty(header) && header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
{
context.AccessToken = header.Substring("Bearer ".Length);
diff --git a/src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs b/src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs
index c8d4b5e1..ce39d26c 100644
--- a/src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs
+++ b/src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionConfiguration.cs
@@ -41,7 +41,7 @@ public class OpenIddictValidationDataProtectionConfiguration : IConfigureOptions
///
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictValidationDataProtectionOptions options)
+ public void PostConfigure(string? name, OpenIddictValidationDataProtectionOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs b/src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs
index 078d9c83..92336e98 100644
--- a/src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs
+++ b/src/OpenIddict.Validation.ServerIntegration/OpenIddictValidationServerIntegrationConfiguration.cs
@@ -62,7 +62,7 @@ public class OpenIddictValidationServerIntegrationConfiguration : IConfigureOpti
///
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictValidationOptions options)
+ public void PostConfigure(string? name, OpenIddictValidationOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs
index 9d764277..b2dade82 100644
--- a/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs
+++ b/src/OpenIddict.Validation.SystemNetHttp/OpenIddictValidationSystemNetHttpConfiguration.cs
@@ -36,7 +36,7 @@ public class OpenIddictValidationSystemNetHttpConfiguration : IConfigureOptions<
public void Configure(HttpClientFactoryOptions options) => Configure(Options.DefaultName, options);
- public void Configure(string name, HttpClientFactoryOptions options)
+ public void Configure(string? name, HttpClientFactoryOptions options)
{
if (options is null)
{
diff --git a/src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs b/src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs
index 3791246c..00f81e34 100644
--- a/src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs
+++ b/src/OpenIddict.Validation/OpenIddictValidationConfiguration.cs
@@ -26,7 +26,7 @@ public class OpenIddictValidationConfiguration : IPostConfigureOptions
/// The name of the options instance to configure, if applicable.
/// The options instance to initialize.
- public void PostConfigure(string name, OpenIddictValidationOptions options)
+ public void PostConfigure(string? name, OpenIddictValidationOptions options)
{
if (options is null)
{
diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs
index 53f96cde..e32e720d 100644
--- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs
+++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs
@@ -380,7 +380,7 @@ public class OpenIddictServerIntegrationTestClient : IAsyncDisposable
foreach (var element in new StringTokenizer(payload, Separators.Ampersand))
{
var segment = element;
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}
diff --git a/test/OpenIddict.Validation.IntegrationTests/OpenIddictValidationIntegrationTestClient.cs b/test/OpenIddict.Validation.IntegrationTests/OpenIddictValidationIntegrationTestClient.cs
index 01beec3d..afcc5f70 100644
--- a/test/OpenIddict.Validation.IntegrationTests/OpenIddictValidationIntegrationTestClient.cs
+++ b/test/OpenIddict.Validation.IntegrationTests/OpenIddictValidationIntegrationTestClient.cs
@@ -380,7 +380,7 @@ public class OpenIddictValidationIntegrationTestClient : IAsyncDisposable
foreach (var element in new StringTokenizer(payload, Separators.Ampersand))
{
var segment = element;
- if (segment.Length is 0)
+ if (!segment.HasValue || segment.Length is 0)
{
continue;
}