Convert InvalidOperationException to InvalidDataException for form reader (#20138)
This commit is contained in:
parent
cfac5edd15
commit
d0cc04f957
|
|
@ -377,10 +377,17 @@ namespace Microsoft.AspNetCore.WebUtilities
|
||||||
// We will also create a string from it by the end of the function.
|
// We will also create a string from it by the end of the function.
|
||||||
var span = MemoryMarshal.CreateSpan(ref Unsafe.AsRef(readOnlySpan[0]), readOnlySpan.Length);
|
var span = MemoryMarshal.CreateSpan(ref Unsafe.AsRef(readOnlySpan[0]), readOnlySpan.Length);
|
||||||
|
|
||||||
var bytes = UrlDecoder.DecodeInPlace(span, isFormEncoding: true);
|
try
|
||||||
span = span.Slice(0, bytes);
|
{
|
||||||
|
var bytes = UrlDecoder.DecodeInPlace(span, isFormEncoding: true);
|
||||||
|
span = span.Slice(0, bytes);
|
||||||
|
|
||||||
return _encoding.GetString(span);
|
return _encoding.GetString(span);
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException ex)
|
||||||
|
{
|
||||||
|
throw new InvalidDataException("The form value contains invalid characters.", ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,18 @@ namespace Microsoft.AspNetCore.WebUtilities
|
||||||
Assert.Equal("2", formCollection["baz"].ToString());
|
Assert.Equal("2", formCollection["baz"].ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ReadFormAsync_ValueContainsInvalidCharacters_Throw()
|
||||||
|
{
|
||||||
|
var bodyPipe = await MakePipeReader("%00");
|
||||||
|
|
||||||
|
var exception = await Assert.ThrowsAsync<InvalidDataException>(
|
||||||
|
() => ReadFormAsync(new FormPipeReader(bodyPipe)));
|
||||||
|
|
||||||
|
Assert.Equal("The form value contains invalid characters.", exception.Message);
|
||||||
|
Assert.IsType<InvalidOperationException>(exception.InnerException);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ReadFormAsync_ValueCountLimitMet_Success()
|
public async Task ReadFormAsync_ValueCountLimitMet_Success()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ namespace Microsoft.AspNetCore.Internal
|
||||||
/// Read the next char and convert it into hexadecimal value.
|
/// Read the next char and convert it into hexadecimal value.
|
||||||
///
|
///
|
||||||
/// The <paramref name="scan"/> index will be moved to the next
|
/// The <paramref name="scan"/> index will be moved to the next
|
||||||
/// byte no matter no matter whether the operation successes.
|
/// byte no matter whether the operation successes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scan">The index of the byte in the buffer to read</param>
|
/// <param name="scan">The index of the byte in the buffer to read</param>
|
||||||
/// <param name="buffer">The byte span from which the hex to be read</param>
|
/// <param name="buffer">The byte span from which the hex to be read</param>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue