Skip to content

Commit a5b6a37

Browse files
committed
Session property can throw on netcore app 3.1 and lower
1 parent ae840d3 commit a5b6a37

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinatorHelpers.Core.cs

+13-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
#if !NETFRAMEWORK
88
using System;
99
using System.Collections.Generic;
10+
using Datadog.Trace.AppSec.Waf;
1011
using Datadog.Trace.Logging;
1112
using Microsoft.AspNetCore.Http;
13+
using Microsoft.AspNetCore.Http.Features;
1214
using Microsoft.AspNetCore.Mvc.Abstractions;
1315
using Microsoft.AspNetCore.Routing;
1416

@@ -78,7 +80,17 @@ internal static void CheckPathParamsAndSessionId(this Security security, HttpCon
7880
{
7981
var securityCoordinator = SecurityCoordinator.Get(security, span, transport);
8082
var args = new Dictionary<string, object> { { AddressesConstants.RequestPathParams, pathParams } };
81-
var result = securityCoordinator.RunWaf(args, sessionId: context.Session.Id);
83+
IResult? result;
84+
// we need these tests for netcoreapp3.1 and lower, as otherwise it throws
85+
if (context.Features.Get<ISessionFeature>() is not null && (context.Session?.IsAvailable ?? false))
86+
{
87+
result = securityCoordinator.RunWaf(args, sessionId: context.Session.Id);
88+
}
89+
else
90+
{
91+
result = securityCoordinator.RunWaf(args);
92+
}
93+
8294
securityCoordinator.BlockAndReport(result);
8395
}
8496
}

0 commit comments

Comments
 (0)