BaldDemian opened a new pull request, #3483:
URL: https://github.com/apache/fory/pull/3483
## Why?
Fix several new panics when feeding corner-case input found by cargo-fuzz
## What does this PR do?
- In `rust/README.md`, the right command to run all tests seems to be `cargo
test --workspace`. Run `cargo test --features tests` will get:
<img width= "649" height="85" alt="Screenshot 2026-03-15 at 6 16 51 AM"
src="https://github.com/user-attachments/assets/98f52bb3-0227-41f0-8b09-78439cb6531f"
/>
- In `rust/fory-core/src/meta/type_meta.rs`,
-
https://github.com/apache/fory/blob/5fc06f1db45337346db4ed380906c013f1e2f3f7/rust/fory-core/src/meta/type_meta.rs#L645
will panic if `encoding_idx` exceeds the size of `encodings`.
-
https://github.com/apache/fory/blob/5fc06f1db45337346db4ed380906c013f1e2f3f7/rust/fory-core/src/meta/type_meta.rs#L836
will cause OOM if `num_fields` is too large. I limit the max value of
`num_fields` to `i16::MAX` since `field_id` is `i16`
- In `rust/fory-core/src/row/bit_util.rs`, use saturating_add/mul to prevent
potential overflow panic. But would it be better to return error instead of
saturating_add/mul ?🤔
- In `rust/fory-core/src/row/reader.rs`, direct access into slice using `[]`
may cause out-of-bounds panic.
- In `rust/fory-core/src/serializer/collection.rs`,
`rust/fory-core/src/serializer/map.rs` and
`rust/fory-core/src/serializer/primitive_list.rs`, we should check the
remaining bytes in the buffer **before** allocating `Vec`. This can also
prevent OOM.
- In `rust/fory-core/src/serializer/skip.rs`, `generics.first().unwrap()`
and `generics.get(1).unwrap()` will panic if the size of `generics` is not long
enough.
## Related issues
N/A
## AI Contribution Checklist
N/A
## Does this PR introduce any user-facing change?
N/A
## Benchmark
This PR only adds additional check in case of corner-case input and thus
won't has major influence on the performance.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]