Skip to content
This repository was archived by the owner on Oct 2, 2024. It is now read-only.

Commit d4767af

Browse files
authored
Merge pull request #63 from davidp1978/62-null-key-in-form-data
Fix exception with null key in form data
2 parents 94ea51e + 6adcae8 commit d4767af

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/SerilogWeb.Classic/Classic/SerilogWebClassicConfiguration.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,17 @@ internal SerilogWebClassicConfiguration Edit(Func<SerilogWebClassicConfiguration
8989
/// <param name="value">Value of the pair</param>
9090
internal string FilterPasswords(string key, string value)
9191
{
92-
if (FilterPasswordsInFormData && FilteredKeywordsInFormData.Any(keyword => key.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) != -1))
92+
if (!FilterPasswordsInFormData)
93+
{
94+
return value;
95+
}
96+
97+
if (key == null)
98+
{
99+
return value;
100+
}
101+
102+
if (FilteredKeywordsInFormData.Any(keyword => key.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) != -1))
93103
{
94104
return "********";
95105
}

test/SerilogWeb.Classic.Tests/WebRequestLoggingHandlerTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,32 @@ public void PasswordBlackListCanBeCustomized()
363363
Assert.Equal(expectedLoggedData.ToString(), formDataProperty.ToString());
364364
}
365365

366+
[Fact]
367+
public void LogPostedFormDataHandlesNullKeyWhenFiltered()
368+
{
369+
var formData = new NameValueCollection
370+
{
371+
{"Foo","Bar" },
372+
{"Qux", "Baz" },
373+
{null, "" }
374+
};
375+
376+
SerilogWebClassic.Configure(cfg => cfg
377+
.EnableFormDataLogging(forms => forms
378+
.FilterKeywords(new List<string>
379+
{
380+
"NA"
381+
}))
382+
);
383+
384+
TestContext.SimulateForm(formData);
385+
386+
var formDataProperty = LastEvent.Properties["FormData"];
387+
Assert.NotNull(formDataProperty);
388+
var expected = formData.ToSerilogNameValuePropertySequence();
389+
Assert.Equal(expected.ToString(), formDataProperty.ToString());
390+
}
391+
366392
[Fact]
367393
public void EnableDisable()
368394
{

0 commit comments

Comments
 (0)