Skip extensions in SetCookie parser #1049 (#1050)

This commit is contained in:
MK 2018-10-17 12:48:23 -04:00 committed by Chris Ross
parent 3fe17b9faf
commit 39c25357c6
2 changed files with 22 additions and 4 deletions

View File

@ -452,9 +452,15 @@ namespace Microsoft.Net.Http.Headers
result.HttpOnly = true;
}
// extension-av = <any CHAR except CTLs or ";">
else
{
// TODO: skip it? Store it in a list?
else
{
// TODO: skiping it for now to avoid parsing failure? Store it in a list?
// = (no spaces)
if (!ReadEqualsSign(input, ref offset))
{
return 0;
}
ReadToSemicolonOrEnd(input, ref offset);
}
}
@ -520,4 +526,4 @@ namespace Microsoft.Net.Http.Headers
^ HttpOnly.GetHashCode();
}
}
}
}

View File

@ -365,6 +365,18 @@ namespace Microsoft.Net.Http.Headers
Assert.Equal(cookies, results);
}
[Fact]
public void SetCookieHeaderValue_TryParse_SkipExtensionValues()
{
string cookieHeaderValue = "cookiename=value; extensionname=value;";
SetCookieHeaderValue setCookieHeaderValue;
SetCookieHeaderValue.TryParse(cookieHeaderValue, out setCookieHeaderValue);
Assert.Equal("value", setCookieHeaderValue.Value);
}
[Theory]
[MemberData(nameof(ListOfSetCookieHeaderDataSet))]
public void SetCookieHeaderValue_ParseStrictList_AcceptsValidValues(IList<SetCookieHeaderValue> cookies, string[] input)