Skip to content

Commit c1f5acb

Browse files
authored
fix: don't attempt to sort affected events (#36)
The events should already be sorted since we process version constraints from left to right, and the lower bounds always comes first, and our current sorting implementation both ignores the stability constraint and actually attempts to deduplicate events by their version resulting in some advisories losing their `introduced` event
1 parent cfd34d1 commit c1f5acb

5 files changed

Lines changed: 13 additions & 20 deletions

File tree

advisories/acquia_dam/osv-sa-contrib-2024-025.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
{
3535
"type": "ECOSYSTEM",
3636
"events": [
37+
{
38+
"introduced": "1.1.0"
39+
},
3740
{
3841
"fixed": "1.1.0-beta3"
3942
}

advisories/diff/osv-sa-contrib-2024-042.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
{
3535
"type": "ECOSYSTEM",
3636
"events": [
37+
{
38+
"introduced": "2.0.0"
39+
},
3740
{
3841
"fixed": "2.0.0-beta3"
3942
}

advisories/social/osv-sa-contrib-2024-038.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@
4848
{
4949
"type": "ECOSYSTEM",
5050
"events": [
51+
{
52+
"introduced": "13.0.0"
53+
},
5154
{
5255
"fixed": "13.0.0-alpha11"
5356
}

advisories/symfony_mailer/osv-sa-contrib-2023-031.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
{
3333
"type": "ECOSYSTEM",
3434
"events": [
35+
{
36+
"introduced": "1.3.0"
37+
},
3538
{
3639
"fixed": "1.3.0-rc3"
3740
}

scripts/generate_osv_advisories.py

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def parse_version_constraint(versions: str) -> list[osv.Event]:
9494
def build_affected_range(constraint: str) -> osv.Range:
9595
return {
9696
'type': 'ECOSYSTEM',
97-
'events': sort_affected_versions(parse_version_constraint(constraint)),
97+
'events': parse_version_constraint(constraint),
9898
'database_specific': {'constraint': constraint},
9999
}
100100

@@ -166,25 +166,6 @@ def semver_for_sorting(semver: typing.Any) -> str:
166166
return f'{semver_major}.{semver_minor}.{semver_patch}'
167167

168168

169-
def sort_affected_versions(affected_versions: list[osv.Event]) -> list[osv.Event]:
170-
sorted_versions = {}
171-
return_values = []
172-
for affected in affected_versions:
173-
if 'introduced' in affected:
174-
sorted_versions[semver_for_sorting(affected['introduced'])] = affected
175-
if 'fixed' in affected:
176-
sorted_versions[semver_for_sorting(affected['fixed'])] = affected
177-
178-
# sort the dict by the keys assuming the keys are semver strings.
179-
sorted_versions = dict(
180-
sorted(sorted_versions.items(), key=lambda item: semver.parse_version_info(item[0]))
181-
)
182-
for key in sorted_versions:
183-
return_values.append(sorted_versions[key])
184-
185-
return return_values
186-
187-
188169
def get_credits_from_sa(credits: drupal.RichTextField) -> list[osv.Credit]:
189170
credit_list: list[osv.Credit] = []
190171

0 commit comments

Comments
 (0)