Skip to content

Commit 9c5bf99

Browse files
committed
fix: avoid converting None to "None" in AdvisorySeverity
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 571cf6f commit 9c5bf99

4 files changed

Lines changed: 35 additions & 5 deletions

File tree

vulnerabilities/importer.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from typing import Optional
2020
from typing import Set
2121
from typing import Tuple
22-
from typing import Union
2322

2423
import pytz
2524
from dateutil import parser as dateparser
@@ -43,7 +42,6 @@
4342
from vulnerabilities.utils import get_reference_id
4443
from vulnerabilities.utils import is_commit
4544
from vulnerabilities.utils import is_cve
46-
from vulnerabilities.utils import nearest_patched_package
4745
from vulnerabilities.utils import purl_to_dict
4846
from vulnerabilities.utils import update_purl_version
4947

@@ -68,7 +66,7 @@ def __post_init__(self):
6866
raise TypeError(f"system must be a ScoringSystem, got {type(self.system)!r}")
6967

7068
if not isinstance(self.value, str):
71-
self.value = str(self.value)
69+
self.value = str(self.value) if self.value else ""
7270

7371
if self.scoring_elements and self.system in (CVSSV3, CVSSV31, CVSSV4):
7472
vector_value = self.value
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 5.2.11 on 2026-07-02 09:50
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0138_fix_malformed_cvss_vector"),
10+
]
11+
12+
def cleanup_none_severity_string(apps, schema_editor):
13+
AdvisorySeverity = apps.get_model("vulnerabilities", "AdvisorySeverity")
14+
15+
AdvisorySeverity.objects.filter(value="None").update(value="")
16+
17+
operations = [
18+
migrations.RunPython(
19+
cleanup_none_severity_string,
20+
reverse_code=migrations.RunPython.noop,
21+
),
22+
]

vulnerabilities/models.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
import csv
1111
import datetime
12-
import hashlib
13-
import json
1412
import logging
1513
import uuid
1614
import xml.etree.ElementTree as ET

vulnerabilities/tests/test_importer.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,15 @@ def test_vulnerability_severity_cvss_validation_with_invalid_value():
225225
"scoring_elements": "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N",
226226
}
227227
)
228+
229+
230+
def test_vulnerability_severity_value_string_conversion():
231+
severity = VulnerabilitySeverity.from_dict(
232+
{
233+
"system": "cvssv3",
234+
"value": None,
235+
"scoring_elements": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
236+
}
237+
)
238+
239+
assert severity.value == ""

0 commit comments

Comments
 (0)