@@ -80,19 +80,23 @@ def to_advisory(advisory_data):
8080 for rpm in advisory_data .get ("affected_packages" ) or []:
8181 purl = rpm_to_purl (rpm )
8282 if purl :
83- affected_packages .append (
84- AffectedPackage (
85- package = PackageURL (
86- type = purl .type ,
87- name = purl .name ,
88- namespace = purl .namespace ,
89- qualifiers = purl .qualifiers ,
90- subpath = purl .subpath ,
91- ),
92- affected_version_range = RpmVersionRange .from_native (f"= { purl .version } " ),
93- fixed_version = None ,
83+ try :
84+ affected_version_range = RpmVersionRange .from_native (f"= { purl .version } " )
85+ affected_packages .append (
86+ AffectedPackage (
87+ package = PackageURL (
88+ type = purl .type ,
89+ name = purl .name ,
90+ namespace = purl .namespace ,
91+ qualifiers = purl .qualifiers ,
92+ subpath = purl .subpath ,
93+ ),
94+ affected_version_range = affected_version_range ,
95+ fixed_version = None ,
96+ )
9497 )
95- )
98+ except Exception as e :
99+ logger .error (f"Failed to parse version range { purl .version } for { purl } " )
96100
97101 references = []
98102 bugzilla = advisory_data .get ("bugzilla" )
@@ -196,9 +200,11 @@ def __new__(self, version, release=None, epoch=None):
196200 """
197201 if not isinstance (epoch , int ):
198202 if epoch and epoch .strip ():
199- raise ValueError ("Invalid epoch: must be a number or empty." )
203+ logger .error ("Invalid epoch: must be a number or empty." )
204+ return None
200205 if not version :
201- raise ValueError ("Version is required: {}" .format (repr (version )))
206+ logger .error ("Version is required: {}" .format (repr (version )))
207+ return None
202208
203209 return super ().__new__ (EVR , epoch , version , release )
204210
@@ -233,7 +239,8 @@ def from_name(rpm_string):
233239 if ":" not in v :
234240 return None , n , v , r , a
235241 e , v = v .split (":" , 1 )
236- e = int (e )
242+ if e .isdigit ():
243+ e = int (e )
237244 return (e , n , v , r , a )
238245
239246
@@ -251,9 +258,15 @@ def rpm_to_purl(rpm_string):
251258 envra = from_name (rpm_string )
252259
253260 if not envra :
261+ logger .error (f"Invalid RPM name can't get envra: { rpm_string } " )
254262 return None
255263 sepoch , sname , sversion , srel , sarch = envra
256- src_evr = EVR (sversion , srel , sepoch ).to_string ()
264+
265+ evr = EVR (sversion , srel , sepoch )
266+ if not evr :
267+ logger .error (f"Invalid RPM name can't get evr: { rpm_string } " )
268+ return None
269+ src_evr = evr .to_string ()
257270 src_qualifiers = {}
258271 if sarch :
259272 src_qualifiers ["arch" ] = sarch
0 commit comments