As an aside, it would probably be nice if the arrow reader returned a nicer error message rather than a panic on this case
On Wed, Jul 8, 2026 at 8:35 AM Robert Kruszewski <[email protected]> wrote: > Hi all, > > I have been running fuzz tests on arrow C FFI and noticed an interesting > edge case that I couldn't find an answer in the docs/code for. The format > spec has field names as flatbuffer string > https://github.com/apache/arrow/blob/39125bac3960fb0a0625d924b5b3fe174974f530/format/Schema.fbs#L514 > which is as defined in https://flatbuffers.dev/schema/#scalars is > > > Strings (indicated by `string`) are zero-terminated strings, prefixed by > their length. Strings may only hold UTF-8 or 7-bit ASCII. For other text > encodings or general binary data use vectors (`[byte]` or `[ubyte]`) > instead. > > The C FFI interface specifies the schema names as regular char * in > https://github.com/apache/arrow/blob/39125bac3960fb0a0625d924b5b3fe174974f530/cpp/src/arrow/c/abi.h#L53. > > > The question I have is whether there should be duality between the IPC and > C FFI apis, i.e. should they all handle the same schemas and array. What > the fuzzer have found is that column names of shape "abc\0def\0" don't > correctly roundtrip through C FFI. The arrow-rs has an interesting case > that it detects this case and panics in > https://github.com/apache/arrow-rs/blob/52920f946cf8aa038d04fe432e77889f8253b7ce/arrow-schema/src/ffi.rs#L174. > > > I am curious to know where do you think validation should live or even if > there should be any and we should just let the users decide how they want > to deal with it? > > Best, > Robert
