===============
Version History - openSeaChest_Defect
===============
v26.03.2  13-May-2026  Fix for 32bit platforms for reading SCSI defect list. Previous fixes covered 64bit
                       systems, but did not fully resolve 32bit platform issues.
                       Added additional bounds checks for SAS firmware download capability detection,
                       improved overflow checking when reading physical element status (HDD head health),
                       added bounds checks when reading raw GPT partition information to prevent overflow
                       if more than 31.5 million partitions exist in the table, added bounds checks when
                       reading Set Max LBA model number and capacity descriptor lists to prevent overflow
                       if an abnormally large descriptor count is reported, and added maximum bounds checks
                       when iterating over SCSI log pages, subpages, and VPD page lists. A device returning
                       a malformed or oversized length value in any of these paths could cause a loop
                       counter to wrap and in at least one case produce an infinite loop. None of these
                       conditions are reachable with real, spec-compliant hardware.
v26.03.1  04-Apr-2026  Fix out or bounds read when reading Linux OS information in --version.
                       Fix possible out of bounds issue reading SCSI defect list for extremely
                       large defect lists. Unconfirmed if this access occurs in v26.03.0 due to
                       significant API changes that were made, however all versions prior to v26.03.0
                       are affected.
                       Fix for our of bounds write when issuing trim/unmap/deallocate to NVMe devices.
                       Added additional checks to ensure populating supported formats stays in bounds for
                       NVMe devices. This does not affect v26.03.0 however earlier versions could go out of
                       bounds if a malicious response from an NVMe device were received.
                       Added option to disable SATA power consumption feature.
                       Fixed location of SATA power consumption help text to move out of SAS only section.
                       Fixed possible bugs trimming whitespace on model numbers, serial numbers, firmware
                       revisions and other drive reported strings that are space padded. No known real world
                       impacts, mostly just edge cases found during testing various inputs and outputs to these
                       functions.
                       Fixed input handling to various options. When units are provided, hexadecimal input is not
                       allowed. Hex can be passed to many options but it is treated as a raw input, not something
                       to be adjusted based on the unit. Ex: milliamps may be expected, but providing amps would
                       multiply the input by 1000 to convert it to milliamps for internal code.
                       Fixed incorrect bounds passed when generating JSON data for FARM and drive info. This
                       does not appear to go out of bounds due to what is written here, however this could
                       potentially go out of bounds if the data were too long. No known real world impact.
v26.03.0  06-Mar-2026  Utilities now use calendar versioning (CalVer) synchronized with
                       library releases and unified package versioning. This aligns the
                       utility version with the released package containing all tools,
                       simplifying version tracking and release coordination for both
                       developers and users.
                       Fixed possible bug opening drive handle in Linux when scanning for
                       drive connection information. Fixed issue with NVMe set features
                       command in Windows that could affect some feature configuration
                       operations (most users will not be impacted). Improved USB device
                       compatibility, particularly with older USB adapter chipsets. Fixed
                       CISS RAID scanning and device handling. Fixed potential crash when
                       displaying ATA SMART error logs with unclassifiable error codes.
                       Fixed possible memory reading issue in certain diagnostic output
                       where string parsing could read beyond the intended string
                       boundary, though remaining within allocated memory bounds.
                       Added JSON output support for device information and diagnostics
                       reporting. Improved automatic UDS pull method selection to minimize
                       the need for manual --udsMode option when retrieving UDS data.
                       Improved SCSI defect list reporting accuracy.
                       Added --reassignBlocks option to support SCSI reassign blocks
                       operations with a list of logical block addresses.
v1.0.2  06-Oct-2025  Fixed mismatch of GNU/clang access attribute description and how the code was actually written in many
                     parts of the low-level library code. Also added const to many objects to make intention more clear and
                     reduce the chance of accidental modification to memory intended to be used in a read-only way. No known
                     bugs from this, but may affect some optimizations in the code.
                     Fixed compatibility with some newer C23 capable compilers.
                     Fixed incorrect pointer check in TRIM function causing a failure when trying to use this option with valid
                     inputs.
                     Fixed incorrect lookup for supported read defect data command in SCSI Defect list code.
                     Added automatic selection of firmware download transfer size based on drive reported information for all
                     interfaces (min/max/granularity, etc).
                     Fixed out of bounds access when generating FARM combined log (was adding NULL terminator one past end of memory).
                     Removed use of os_Update_File_System_Cache from situations where the drive may not be in a good state (still sanitizing,
                     or after a sector size change) to minimize possible system interaction issues which may disconnect the device from the
                     system.
                     Fixed read/write logic on some USB devices which reported an ATA maxlba of 0.
                     Added tracking lock/unlock requests to a tDevice to keep things in sync better between operations.
                     Refactor SCSI device read/write logic on how commands are selected and issued (10B vs 16B)
                     Removed automatic ATA passthrough reads/writes due to other side affects this created on some devices.
                     Fixed a crash on NVMe devices in Windows when using the openfabrics NVMe driver.
                     Fixed a bug that tracks the last command's sense data after issuing which may have been missed in certain situations.
v1.0.1  07-Jul-2025  Fixed a bug with scan not showing any output in specific circumstances where number of successfully
                     enumerated devices is equivalent to the number of unsuccessfully enumerated devices.
                     Disabled extra CSMI related device scan in Windows that can cause a hang on some chipsets.
                     Added some more legacy USB devices to list of known devices to support these better when they are used.
v0.9.0  28-Aug-2024  Combined 2 internal tools and moved them to openSeaChest_Defect
                     Pull in security updates and low-level bug fixes from opensea-libs.
                     CISS RAID device support for Linux (CCISS, HPSA, and SmartPQI drivers)v1.0.0  28-May-2025  Added support for low-level SCSI rescan in Linux when passing aggressive scan flag -S.
                     Refactor reading SCSI capacity code which may reduce total commands issued.
                     Refactored looking up supported SCSI commands with Report Supported operations codes and
                     legacy CmdDT bit in Inquiry which reduces total commands issued.
                     Source code level support for OpenBSD, NetBSD, and DragonflyBSD now available.
                     More source code hardening implemented with new bounds checking functions from
                     opensea-common library (behave similar to Annex K in C11).
                     Fixed a bug in reading device information (-i) on USB devices causing the information to be
                     incomplete.
                     Fixed big endian system support for all devices, but especially for NVMe.
                     Fixed looking up SD to SG device handles in Linux.
                     Added new exit codes for Device Not Found when opening the handle and Device Busy when
                     attempting to open a handle.
                     Enhanced file security API to display recommended actions to modify directories to be
                     compatible with security requirements when reading or writing a file.
                     Fixed a crash when reading/writing files located at / in unix-like systems.
                     Fixed exit code when -d all or --modelMatch are used but all devices are skipped so that
                     the exit code is not set to 0 (success) when all the devices were skipped.
                     Implemented a workaround for old drives that support both read long/write long and the
                     write uncorrectable ext commands, but fail write uncorrectable to retry as needed.
