Return AffectedPackage objects one for each affected_version_range and invert the safe_version_ranges ( patched_versions , unaffected_versions ) then passing the purl and the inverted safe_version_range to the AffectedPackage object
(record, purl)
| 113 | |
| 114 | |
| 115 | def get_affected_packages(record, purl): |
| 116 | """ |
| 117 | Return AffectedPackage objects one for each affected_version_range and invert the safe_version_ranges |
| 118 | ( patched_versions , unaffected_versions ) then passing the purl and the inverted safe_version_range |
| 119 | to the AffectedPackage object |
| 120 | """ |
| 121 | safe_version_ranges = record.get("patched_versions", []) |
| 122 | # this case happens when the advisory contain only 'patched_versions' field |
| 123 | # and it has value None(i.e it is empty :( ). |
| 124 | if not safe_version_ranges: |
| 125 | safe_version_ranges = [] |
| 126 | safe_version_ranges += record.get("unaffected_versions", []) |
| 127 | safe_version_ranges = [i for i in safe_version_ranges if i] |
| 128 | |
| 129 | affected_packages = [] |
| 130 | affected_version_ranges = [ |
| 131 | GemVersionRange.from_native(elem).invert() for elem in safe_version_ranges |
| 132 | ] |
| 133 | |
| 134 | for affected_version_range in affected_version_ranges: |
| 135 | affected_packages.append( |
| 136 | AffectedPackage( |
| 137 | package=purl, |
| 138 | affected_version_range=affected_version_range, |
| 139 | ) |
| 140 | ) |
| 141 | return affected_packages |
| 142 | |
| 143 | |
| 144 | def get_aliases(record) -> [str]: |