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

ASF GitHub Bot updated AVRO-4270:
---------------------------------
    Labels: pull-request-available  (was: )

> Fix wrong schema accessor in avro_generic_map_class
> ---------------------------------------------------
>
>                 Key: AVRO-4270
>                 URL: https://issues.apache.org/jira/browse/AVRO-4270
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: c
>    Affects Versions: 1.12.1
>            Reporter: Deho Kim
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.13.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> ## What is the purpose of the change
> `avro_generic_map_class()` in `lang/c/src/generic.c` incorrectly calls
> `avro_schema_array_items(schema)` instead of `avro_schema_map_values(schema)`.
> This is a copy-paste bug from the array class implementation.
> The wrong accessor reinterprets a MAP schema pointer as an ARRAY schema type.
> Under UndefinedBehaviorSanitizer with `-fno-sanitize-recover`, this triggers a
> fatal diagnostic. Without sanitizers the code silently returns the correct 
> value
> today because `avro_array_schema_t` and `avro_map_schema_t` share the same
> memory layout, but this is fragile and will break if the struct layouts 
> diverge.
> Fixes AVRO-XXXX.
> ## Verifying this change
> This change can be verified as follows:
> - Built the C library with ASan + UBSan:
>   `-fsanitize=address,undefined -fno-sanitize-recover=undefined -g -O1`
> - Ran a custom `value_reader_fuzzer` targeting `avro_value_read()` with a
>   PoC input that selects a `\{"type":"map","values":"string"}` schema
> - Before fix: UBSan aborts in the map value initialization path
> - After fix: no UBSan diagnostic; input is processed normally
> Discovered by FuzzingBrain @O2Lab.
> ## Documentation
> - Does this pull request introduce a new feature? (yes / no)
>   **no**
> - If yes, how is the feature documented? (not applicable / docs / JavaDocs / 
> not documented)
>   **not applicable**



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

Reply via email to