It's Android 14 release day! All versions of avbroot, including the old Python version, are compatible with Android 14 OTAs.
Changes:
- Add new unpack and pack commands for cpio archives (ramdisks) (PR #173, PR #178)
- Rename
header.toml
toboot.toml
for the boot image unpack and pack commands (PR #175)- Also changes the file format a bit to make it more readable.
Behind-the-scenes changes:
- Add streaming CPIO reader and writer (PR #172)
- Update dependencies (PR #174, PR #181)
- Switch to prost for protobuf encoding/decoding (PR #176)
This release is all about hardening avbroot against untrusted (or corrupted) inputs. While all of avbroot's parsers are memory-safe, it's still possible for crashes to occur due to logic issues like allocating too much memory or dividing by zero. With this release, most of these potential issues have been fixed and fuzz tests have been added to help find more of these situations.
On the filesystem side of things, it is no longer possible for a nefarious program to cause avbroot to write to unintended locations by eg. swapping out an output directory or temp directory with a symlink while it is running.
Behind-the-scenes changes:
- Consolidate logic for handling
--pass-file
and--pass-env-var
(PR #156) - cargo-deny: Block executables in dependencies (PR #133)
- Implement size limits for parsers to prevent allocating too much memory (Issue #157, PR #158, PR #159, PR #164, PR #168, PR #169, PR #170)
- Add fuzzers to help catch panics/crashes (Issue #160, PR #161, PR #162, PR #163, PR #165, PR #167)
- Use handle-based directory operations instead of path-based directory operations (Issue #166, PR #171)
- Add support for dm-verify FEC (forward error correction) (Issue #145, PR #146)
ota verify
andavb verify
will now check the FEC data.
- Print status and warning messages to stderr (PR #149)
- Add new
avb unpack
,avb pack
, andavb repack
commands for AVB images (Issue #144, Issue #148, PR #152)avb verify
now optionally accepts--repair
to fix corrupted dm-verity images.
Behind-the-scenes changes:
- Remove unnecessary use of
Arc
(PR #147) - Use bstr crate to escape mostly UTF-8 binary data (PR #150)
- Improve error fields and error contest (PR #153)
- Upgrade xz version in precompiled binaries (Issue #138, PR #139)
- This fixes the
ota extract
andota verify
commands in some multithreaded situations.
- This fixes the
- Add
--version
option to print out avbroot's version (Issue #138, PR #140)
- Fix
data_offset
being set for payload operations that don't need it (PR #136)- This fixes patched stock OnePlus images from being rejected when flashing.
Behind-the-scenes changes:
- Move full OTA check to CLI functions to allow library functions to parse delta OTAs (PR #135)
- Remove unnecessary use of
anyhow
macro (PR #137)
- Add support for Magisk 263xx (PR #132)
- Initial Rust release. The old Python implementation can be found in the
python
branch. (PR #130)