Tracking issue for upstream dotnet/android AssemblyStore reader changes that our vendored copy in src/Sentry.Android.AssemblyReader/ does not yet implement. Split out from #5451 (the watch-upstream alert for the file move). These are targeted at the next major release.
Compression (LZ4 → Zstandard) and decompressed-file caching are tracked separately in #5346 and are out of scope here.
Background
Our vendored parser is already ahead of the ATTRIBUTION.txt baseline: it tracks upstream through 64018e13 and hand-ports the v3 format (dotnet/android#10249). Comparing upstream from there to commit f1aecf9, the following logic is new upstream and missing from our copy.
Gaps to port
Nice-to-have robustness that came with the same commits: checked offset arithmetic, EndOfStreamException on short reads, and ArrayPool buffer reuse in ReadEntryImageData.
Housekeeping
Refs
Tracking issue for upstream
dotnet/androidAssemblyStore reader changes that our vendored copy insrc/Sentry.Android.AssemblyReader/does not yet implement. Split out from #5451 (the watch-upstream alert for the file move). These are targeted at the next major release.Compression (LZ4 → Zstandard) and decompressed-file caching are tracked separately in #5346 and are out of scope here.
Background
Our vendored parser is already ahead of the
ATTRIBUTION.txtbaseline: it tracks upstream through64018e13and hand-ports the v3 format (dotnet/android#10249). Comparing upstream from there to commitf1aecf9, the following logic is new upstream and missing from our copy.Gaps to port
StoreReader_V2.csnow accepts0x_0000004versions and reads a newcontent_idfield in the header (present when format number >= 4). We accept only v2/v3, so a v4 store is rejected. This is the highest-value item — .NET Android's move to CoreCLR is what produces v4 stores._assembly_storeELF dynamic-symbol payload discovery.Utils.FindELFPayloadOffsetAndSizenow locates the payload via a_assembly_storesymbol in.dynsym(with a newELFPayloadError.InvalidPayloadSymbol), in addition to the namedpayloadsection. Ours only doesFindELFPayloadSectionOffsetAndSize.index_size / index_entry_count(GetIndexEntrySize()) and supports the V2 index-entry layouts, rather than branching onIs64Bitwith fixed sizes. Ties into v4 and hardens against corrupt or future stores.Nice-to-have robustness that came with the same commits:
checkedoffset arithmetic,EndOfStreamExceptionon short reads, andArrayPoolbuffer reuse inReadEntryImageData.Housekeeping
src/Sentry.Android.AssemblyReader/V2/ATTRIBUTION.txt— it still cites baseline5ebcb1dd, but the code has moved to64018e13+ local v3.Refs