|
15 | 15 | from fetchcode.vcs import fetch_via_vcs |
16 | 16 | from packageurl import PackageURL |
17 | 17 | from pytz import UTC |
| 18 | +from univers.version_constraint import validate_comparators |
18 | 19 | from univers.version_range import GemVersionRange |
19 | | -from univers.version_range import InvalidVersionRange |
20 | 20 |
|
21 | 21 | from vulnerabilities.importer import AdvisoryData |
22 | 22 | from vulnerabilities.importer import AffectedPackageV2 |
@@ -158,28 +158,36 @@ def get_affected_packages(record, purl): |
158 | 158 | for unaffected_version in record.get("unaffected_versions", []): |
159 | 159 | try: |
160 | 160 | affected_version_range = GemVersionRange.from_native(unaffected_version).invert() |
| 161 | + if not validate_comparators(affected_version_range.constraints): |
| 162 | + logger.error( |
| 163 | + f"Invalid VersionRange Constraints for unaffected_version: {unaffected_version}" |
| 164 | + ) |
| 165 | + continue |
161 | 166 | affected_packages.append( |
162 | 167 | AffectedPackageV2( |
163 | 168 | package=purl, |
164 | 169 | affected_version_range=affected_version_range, |
165 | 170 | fixed_version_range=None, |
166 | 171 | ) |
167 | 172 | ) |
168 | | - except InvalidVersionRange as e: |
169 | | - logger.error(f"InvalidVersionRange {e}") |
| 173 | + except Exception as e: |
| 174 | + logger.error(f"Invalid VersionRange Constraints for unaffected_version: {e}") |
170 | 175 |
|
171 | 176 | for patched_version in record.get("patched_versions", []): |
172 | 177 | try: |
173 | 178 | fixed_version_range = GemVersionRange.from_native(patched_version) |
| 179 | + if not validate_comparators(fixed_version_range.constraints): |
| 180 | + continue |
174 | 181 | affected_packages.append( |
175 | 182 | AffectedPackageV2( |
176 | 183 | package=purl, |
177 | 184 | affected_version_range=None, |
178 | 185 | fixed_version_range=fixed_version_range, |
179 | 186 | ) |
180 | 187 | ) |
181 | | - except InvalidVersionRange as e: |
182 | | - logger.error(f"InvalidVersionRange {e}") |
| 188 | + except Exception as e: |
| 189 | + logger.error(f"Invalid VersionRange Constraints for patched_versions: {e}") |
| 190 | + |
183 | 191 | return affected_packages |
184 | 192 |
|
185 | 193 |
|
|
0 commit comments