From c22f2f0be29e3647914ca1dc88af1648db41d674 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 18 Jan 2007 20:54:40 +0000 Subject: Validate ebuild names in portdbapi.cp_list() and raise an raise an informative InvalidData exception from match_from_list when necessary. (trunk r5712:5714) svn path=/main/branches/2.1.2/; revision=5715 --- pym/portage.py | 10 ++++++++-- pym/portage_dep.py | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pym/portage.py b/pym/portage.py index 53eac070a..92463ea97 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -5968,8 +5968,14 @@ class portdbapi(dbapi): mytrees = self.porttrees for oroot in mytrees: for x in listdir(oroot+"/"+mycp,EmptyOnError=1,ignorecvs=1): - if x[-7:]==".ebuild": - d[mysplit[0]+"/"+x[:-7]] = None + if x.endswith(".ebuild"): + pf = x[:-7] + ps = pkgsplit(pf) + if not ps: + writemsg("\nInvalid ebuild name: %s\n" % \ + os.path.join(oroot, mycp, x), noiselevel=-1) + continue + d[mysplit[0]+"/"+pf] = None return d.keys() def freeze(self): diff --git a/pym/portage_dep.py b/pym/portage_dep.py index b13569822..bf40452ac 100644 --- a/pym/portage_dep.py +++ b/pym/portage_dep.py @@ -607,6 +607,8 @@ def match_from_list(mydep, candidate_list): elif operator == "~": # version, any revision, match for x in candidate_list: xs = catpkgsplit(x) + if xs is None: + raise InvalidData(x) if not cpvequal(xs[0]+"/"+xs[1]+"-"+xs[2], mycpv_cps[0]+"/"+mycpv_cps[1]+"-"+mycpv_cps[2]): continue if xs[2] != ver: -- cgit v1.2.3-1-g7c22