Skip to content

DRAFT: Fix cargo version parsing for caret, tilde, and pre-release versions#1701

Draft
zahidblackduck wants to merge 8 commits intomasterfrom
dev/zahidblackduck/IDETECT-5056-cargo-version-sanitization-bugfix
Draft

DRAFT: Fix cargo version parsing for caret, tilde, and pre-release versions#1701
zahidblackduck wants to merge 8 commits intomasterfrom
dev/zahidblackduck/IDETECT-5056-cargo-version-sanitization-bugfix

Conversation

@zahidblackduck
Copy link
Copy Markdown
Collaborator

@zahidblackduck zahidblackduck commented Mar 31, 2026

JIRA Ticket

IDETECT-5056

Description

This pull request aims to fix the cargo detectors failing with NumberFormatException when Cargo.toml version strings contain operator prefixes (^, ~) or pre-release tags (-alpha, -rc1). For example, syslog = "^6.0" caused extraction failure because the parser attempted to parse "^6" as an integer.

Root Cause

VersionUtils.versionMatches() handled comparison operators (>=, >, <=, <, =) but not ^ or ~, and compareVersions() did not strip pre-release or build metadata before parsing.

Implementation

  • Introduced a CargoOperator enum inside VersionUtils to represent valid Cargo version operators
  • Added caret and tilde range matching using upper-bound checks
  • Refactored stripBuildMetadata() to sanitizeVersion() to also strip pre-release tags before numeric parsing
  • Add unit tests for version matching in VersionUtilsTest

N.B: This pull request is meant to be shipped with detect 11.5.0

@zahidblackduck zahidblackduck self-assigned this Mar 31, 2026
@zahidblackduck zahidblackduck marked this pull request as draft March 31, 2026 11:24
@zahidblackduck zahidblackduck changed the title Fix Cargo version parsing for caret, tilde, and pre-release versions DRAFT: Fix Cargo version parsing for caret, tilde, and pre-release versions Mar 31, 2026
@zahidblackduck zahidblackduck changed the title DRAFT: Fix Cargo version parsing for caret, tilde, and pre-release versions DRAFT: Fix cargo version parsing for caret, tilde, and pre-release versions Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant