- archive.go: extractTarGzFromReader truncated decompressed tar.gz content
at a hard 50MB byte boundary before checking whether it was a tar archive,
corrupting the tar structure mid-entry for any legitimately large archive
(e.g. a 200MB decompressed NVIDIA bug-report bundle) and causing the whole
file to fail with "tar read: unexpected EOF" instead of extracting what's
there. Now peeks the first 512-byte tar block to detect tar vs. single
gzipped file without consuming the stream, and streams tar entries with a
cumulative (not raw-byte) size limit that only ever stops at an entry
boundary. The byte-level cap still applies to the single-gzipped-file case,
where it's safe since there's no container structure to corrupt.
- reanimator_converter.go: normalizeLegacyPCIeDeviceClass mapped an empty
device_class to "NetworkController" by accident (grouped into the same
case as "network"/"ethernet" aliases). Sources that never populate a class
at all (e.g. Dell's DCIM_PCIDeviceView) got every such device — including
NVMe drives and SATA controllers — mislabeled as network controllers.
Empty now stays empty instead of being guessed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>