File tree Expand file tree Collapse file tree 4 files changed +31
-5
lines changed Expand file tree Collapse file tree 4 files changed +31
-5
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,13 @@ Release notes
22=============
33
44
5+ Next Release
6+ ------------
7+
8+ - We filtered out the weakness that are not presented in the
9+ cwe2.database before passing them into the vulnerability details view.
10+
11+
512Version v33.2.0
613-----------------
714
Original file line number Diff line number Diff line change @@ -275,17 +275,26 @@ class Weakness(models.Model):
275275 vulnerabilities = models .ManyToManyField (Vulnerability , related_name = "weaknesses" )
276276 db = Database ()
277277
278+ @property
279+ def weakness (self ):
280+ """
281+ Return a queryset of Weakness for this vulnerability.
282+ """
283+ try :
284+ weakness = self .db .get (self .cwe_id )
285+ return weakness
286+ except Exception as e :
287+ logger .warning (f"Could not find CWE { self .cwe_id } : { e } " )
288+
278289 @property
279290 def name (self ):
280291 """Return the weakness's name."""
281- weakness = self .db .get (self .cwe_id )
282- return weakness .name
292+ return self .weakness .name if self .weakness else ""
283293
284294 @property
285295 def description (self ):
286296 """Return the weakness's description."""
287- weakness = self .db .get (self .cwe_id )
288- return weakness .description
297+ return self .weakness .description if self .weakness else ""
289298
290299
291300class VulnerabilityReferenceQuerySet (BaseQuerySet ):
Original file line number Diff line number Diff line change @@ -88,3 +88,9 @@ def test_vulnerability_package(self):
8888
8989 assert v1 .vulnerable_packages .all ()[0 ] == p1
9090 assert v1 .patched_packages .all ()[0 ] == p2
91+
92+ def test_cwe_not_present_in_weaknesses_db (self ):
93+ w1 = models .Weakness .objects .create (name = "189" )
94+ assert w1 .weakness is None
95+ assert w1 .name is ""
96+ assert w1 .description is ""
Original file line number Diff line number Diff line change @@ -116,6 +116,10 @@ def get_queryset(self):
116116
117117 def get_context_data (self , ** kwargs ):
118118 context = super ().get_context_data (** kwargs )
119+ weaknesses = self .object .weaknesses .all ()
120+ weaknesses_present_in_db = [
121+ weakness_object for weakness_object in weaknesses if weakness_object .weakness
122+ ]
119123 context .update (
120124 {
121125 "vulnerability" : self .object ,
@@ -125,7 +129,7 @@ def get_context_data(self, **kwargs):
125129 "aliases" : self .object .aliases .all (),
126130 "affected_packages" : self .object .affected_packages .all (),
127131 "fixed_by_packages" : self .object .fixed_by_packages .all (),
128- "weaknesses" : self . object . weaknesses . all () ,
132+ "weaknesses" : weaknesses_present_in_db ,
129133 }
130134 )
131135 return context
You can’t perform that action at this time.
0 commit comments