Ismaël Mejía created AVRO-4278:
----------------------------------

             Summary: [c++] Bound collection size when decoding arrays and maps 
in GenericReader
                 Key: AVRO-4278
                 URL: https://issues.apache.org/jira/browse/AVRO-4278
             Project: Apache Avro
          Issue Type: Sub-task
          Components: c++
    Affects Versions: 1.13.0
            Reporter: Ismaël Mejía


{{GenericReader::read()}} ({{lang/c++/impl/Generic.cc}}) handles the array and 
map cases by calling {{r.resize(r.size() + m)}}, where {{m}} is the block count 
returned by {{Decoder::arrayStart()}} / {{mapStart()}} / {{arrayNext()}} / 
{{mapNext()}}. {{BinaryDecoder::doDecodeItemCount()}} returns this count 
without any upper bound, so the vector is grown to the requested size before 
any element is read.

Add validation of the block count (per block and cumulatively) against a 
configurable maximum before resizing, and reject counts that would exceed it. 
Preferably enforce the bound in the decoder's item-count path so all consumers 
benefit. Add a test covering a small input that declares an oversized block 
count.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to