Skip to content

V 1.03

Latest

Choose a tag to compare

@oznotes oznotes released this 24 Dec 11:41
· 5 commits to master since this release

Version 1.0.3 (2025-12)

CRITICAL FIXES:

  • Fixed arithmetic overflow in sector calculations for disks >4GB
  • Fixed use-after-free in QByteArray::fromRawData (changed to deep copy)
  • Fixed division by zero in getNumberOfSectors
  • Fixed buffer overflow in volume name construction
  • Fixed uninitialized bytesread variable causing data corruption
  • Fixed memory leak in on_bDetect_clicked partition check
  • Fixed getDeviceID uninitialized data access

MEMORY LEAKS FIXED:

  • TestModel objects leaked in partition detection loop
  • sectorData leaked on error paths in read/write/verify
  • slashify() allocation leak on error
  • sectorData2 uninitialized pointer in destructor
  • QFile not closed after hash generation

HANDLE LEAKS FIXED:

  • hFile leak in on_bWrite_clicked error paths
  • hFile leak in on_bRead_clicked error paths
  • hVolume leak in on_bVerify_clicked error paths
  • hRawDisk double cleanup with INVALID_HANDLE_VALUE
  • Debug log file handle never closed

INTEGER OVERFLOW PROTECTION:

  • Added overflow check in sector size calculations
  • Added qint64->int bounds check in blob.mid()
  • Added FLASHTYPE multiplication overflow protection
  • Fixed progressbar range overflow (numsectors > INT_MAX)
  • Fixed integer overflow in ElapsedTimer for long operations

LOGIC BUGS FIXED:

  • spaceAvailable() returned TRUE on error (now returns FALSE)
  • DBTF_NET flag check was always true
  • QString NULL comparison (now uses isEmpty())
  • indexOf(-1) validation before truncate
  • Degenerate loop executing only once

SAFETY IMPROVEMENTS:

  • Added QString.at() bounds checks (4 locations)
  • Added QTextCodec NULL check with Latin-1 fallback
  • Added clipboard null check before setText
  • Added pDevDesc null check in enumeratePhysicalDrives
  • Added TestModel virtual destructor
  • Added TestModel::data() row bounds validation
  • Fixed unaligned memory access using memcpy
  • Fixed unsafe sprintf() usage with _snprintf_s

CODE QUALITY:

  • Removed dead isDriveVirtual() function
  • Removed commented/dead code blocks
  • Added default case in nativeEvent switch
  • Fixed memcmp return type (int, not unsigned long long)
  • Initialized pID variable
  • Fixed partial read/write validation

UI CHANGES:

  • Version number now displayed in window title bar
  • Fixed text clipping on high DPI displays (GroupBox title descenders cut off)
    Replaced QGroupBox titles with QLabel widgets to bypass Qt rendering bug

GUI MODERNIZATION (Windows 11 Style):

  • NEW: Modern QSS stylesheet with Fluent Design aesthetics
  • Accent color theme (#0078d4 blue) for primary actions
  • Rounded corners (3px) on buttons, inputs, and progress bars
  • Hover/pressed/disabled states for all interactive elements
  • Read/Write buttons styled as primary actions with accent background
  • Monospace font (Consolas) for hash display
  • Modern table view styling with subtle gridlines
  • Checkbox styling with accent color when checked
  • Status bar with subtle top border

LAYOUT IMPROVEMENTS:

  • Window now resizable (was fixed size)
  • Minimum window size increased: 425x300 -> 520x400 pixels
  • Improved margins (8px left, 12px top/right, 8px bottom)
  • Consistent 6px spacing between elements
  • Better visual hierarchy with grouped controls

TIMER DISPLAY:

  • New format: "00:00:00" (hours:minutes:seconds)
  • Always visible in status bar (removed show/hide)
  • Tooltip shows "Elapsed Time"
  • Migrated from deprecated QTime to QElapsedTimer

DEVICE DROPDOWN:

  • Shows device size in GB for easier identification

BUILD & RELEASE (December 2054):

  • 64-bit (x64) build support with MSVC2019/Qt 5.15.0
  • Debug logging disabled by default (wrapped in #ifdef DEBUG_LOGGING)
  • Fixed compiler warning C4101: removed unused cbBytesReturned variable
  • Fixed compiler warning C4267: changed int to size_t for strlen result
  • Updated copyright to 2009-2026
  • windeployqt release packaging