Add whitespace sanitization in fuzzySearch CPE to fix CPE validation errors#5061
Merged
nscuro merged 1 commit intoDependencyTrack:masterfrom Jun 18, 2025
jonbally:master
Merged
Add whitespace sanitization in fuzzySearch CPE to fix CPE validation errors#5061nscuro merged 1 commit intoDependencyTrack:masterfrom jonbally:master
nscuro merged 1 commit intoDependencyTrack:masterfrom
jonbally:master
Conversation
The vendor and product String parameters passed to fuzzySearch() might contain spaces, as the frontend does not prevent inputting these when manually creating a component. As far as I know CycloneDX and SPDX also do not restrict this, so imported components could also contain spaces in their name and vendor properties. As fuzzySearch() creates a new CPE object which is validated inside the constructor, this will cause exceptions to be logged for all components that contain spaces. I have added a simple replace before passing these strings to the CPE constructor to prevent the exceptions from being thrown. Signed-off-by: jonbally <[email protected]>
🎉 Snyk checks have passed. No issues have been found so far.✅ security/snyk check is complete. No issues have been found. (View Details) |
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferences |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The vendor and product String parameters passed to fuzzySearch() might contain spaces, as the frontend does not prevent inputting strings containing spaces when manually creating a component. As far as I know CycloneDX and SPDX also do not restrict this, so imported components could also contain spaces in their name and vendor properties (unless they are sanitized when importing).
As
fuzzySearch()creates a new CPE object which validates the attributes inside the constructor, this will cause exceptions to be logged for all components that contain spaces in name and/or vendor.I have added a simple replace before passing these strings to the CPE constructor to prevent the exceptions from being thrown.
I have also renamed the private method
escape()toescapeLuceneQuery()to be more descriptive, as it calls the LuceneQueryParser.escape()method.Addressed Issue
Fixes #4920
Additional Details
I wanted to add a test for the fix, but the only testable difference is that the exceptions no longer appear in the logs. I tried to find ways to elegantly test this, but could only find solutions which would require adding dependencies to catch the log entries from the tests and asserting that no log entry appears for components with spaces in name or vendor.
If there is a better way to test such cases please let me know.
I ran all tests related to the
FuzzyVulnerableSoftwareSearchManagerand they passed.Checklist
This PR implements an enhancement, and I have provided tests to verify that it works as intendedThis PR introduces changes to the database model, and I have added corresponding [update logic]~~(https://github.com/DependencyTrack/dependency-track/tree/master/src/main/java/org/dependencytrack/upgrade)This PR introduces new or alters existing behavior, and I have updated the documentation accordingly