[ 
https://issues.apache.org/jira/browse/AVRO-3226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philip Sanetra updated AVRO-3226:
---------------------------------
    Description: 
The BinaryDecoder.ReadString() method on NetStandard2.1+ produces an 
OutOfMemoryException if there is invalid input caused by this code:

 
{code:c#}
int length = ReadInt();
Span<byte> buffer = length <= StackallocThreshold ? stackalloc byte[length] :   
             (bufferArray = ArrayPool<byte>.Shared.Rent(length)).AsSpan(0, 
length);
{code}
 

ArrayPool<byte>.Shared.Rent(length) will cause the exception if ReadInt() 
returns a big number like int.MaxValue.

  was:
The BinaryDecoder.ReadString() method on NetStandard2.1+ produces an 
OutOfMemoryException if there is invalid input caused by this code:

 
{code:c#}
int length = ReadInt();
Span<byte> buffer = length <= StackallocThreshold ? stackalloc byte[length] :   
             (bufferArray = ArrayPool<byte>.Shared.Rent(length)).AsSpan(0, 
length);
{code}
 

ArrayPool<byte>.Shared.Rent(length) will cause the exception if ReadInt() 
returns a big number like int.MaxValue.

 

Related to [AVRO-3225|https://issues.apache.org/jira/browse/AVRO-3225]


> OutOfMemoryException on invalid input for BinaryDecoder.ReadString on 
> NetStandard 2.1+
> --------------------------------------------------------------------------------------
>
>                 Key: AVRO-3226
>                 URL: https://issues.apache.org/jira/browse/AVRO-3226
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: csharp
>            Reporter: Philip Sanetra
>            Priority: Major
>
> The BinaryDecoder.ReadString() method on NetStandard2.1+ produces an 
> OutOfMemoryException if there is invalid input caused by this code:
>  
> {code:c#}
> int length = ReadInt();
> Span<byte> buffer = length <= StackallocThreshold ? stackalloc byte[length] : 
>                (bufferArray = ArrayPool<byte>.Shared.Rent(length)).AsSpan(0, 
> length);
> {code}
>  
> ArrayPool<byte>.Shared.Rent(length) will cause the exception if ReadInt() 
> returns a big number like int.MaxValue.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to