Skip to content

Simple Launcher v2.18

Latest

Choose a tag to compare

@UberGuidoZ UberGuidoZ released this 22 Mar 05:59
· 2 commits to main since this release
04f166f

Bug Fixes

  • Fixed DrawDropLine fallback Y coordinate being wrong for any dropIdx > 1. The previous fallback always stopped at the first visible button, drawing the drop indicator at the wrong position. The fallback now walks backward from the last visible button to find the correct slot boundary.
  • Fixed GetBasePath off-by-one in the .ini extension boundary check. The guard (dot - g_basePath) + 5 < MAX_PATH was one position too strict and silently dropped the .ini extension when the path filled the buffer exactly. Corrected to <= MAX_PATH.
  • Fixed SaveAll leaving a .tmp file behind when MoveFileEx fails. The return value was previously ignored; on failure the orphaned temp file is now removed with DeleteFile(tmpPath) so it does not accumulate on disk.

Security

  • Fixed LoadIconForSlot applying no UNC/device path guard to the iconPath field. A malicious or corrupted INI could specify \evil.server\share\icon.ico and trigger an outbound SMB connection or object-manager side-effect. iconPath now rejects any path beginning with \ or //. The path field (target executable) is intentionally not restricted, as users may legitimately launch programs from network shares.

Optimizations

  • Fixed ExpandEnvVars DWORD underflow: when dstSize == 0, the fallback strncpy(dst, src, dstSize - 1) wraps to 0xFFFFFFFF, causing a potential multi-gigabyte overrun. A zero-size guard is now added at entry.
  • Fixed tooltip builder launchMode == 2 branch missing pos +=. The launchMode == 1 branch correctly accumulated the snprintf return value; the == 2 branch discarded it, leaving pos stale - inconsistent and fragile if the block is extended.