fix(parser,exporter): fix large tar.gz truncation and empty device_class defaulting
- 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>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
4fa16c78a5
commit
8665f79fd6
@@ -2545,7 +2545,14 @@ func normalizePCIeDeviceClass(d models.HardwareDevice) string {
|
||||
|
||||
func normalizeLegacyPCIeDeviceClass(deviceClass string) string {
|
||||
switch strings.ToLower(strings.TrimSpace(deviceClass)) {
|
||||
case "", "network", "network controller", "networkcontroller", "ethernet", "ethernet controller", "ethernetcontroller":
|
||||
case "":
|
||||
// Unknown class must stay unknown — it must not be guessed as
|
||||
// "NetworkController" just because that happened to be the first
|
||||
// case in this switch. An empty class is common for device
|
||||
// sources (e.g. Dell DCIM_PCIDeviceView) that never carry a class
|
||||
// at all, including storage/GPU/other non-network devices.
|
||||
return ""
|
||||
case "network", "network controller", "networkcontroller", "ethernet", "ethernet controller", "ethernetcontroller":
|
||||
return "NetworkController"
|
||||
case "fibre channel", "fibre channel controller", "fibrechannelcontroller", "fc":
|
||||
return "FibreChannelController"
|
||||
|
||||
Reference in New Issue
Block a user