diff options
author | Zac Medico <zmedico@gentoo.org> | 2017-11-20 16:01:40 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2017-11-20 16:11:48 -0800 |
commit | 128c55ed57eea3f02b860a14a7e4f8cae109089a (patch) | |
tree | 3e8273f6208a12207fdcaeec941c048aa6b609c2 | |
parent | portage.manifest: Fix mis-parsing Manifests with numerical checksums (diff) | |
download | portage-128c55ed57eea3f02b860a14a7e4f8cae109089a.tar.gz portage-128c55ed57eea3f02b860a14a7e4f8cae109089a.tar.bz2 portage-128c55ed57eea3f02b860a14a7e4f8cae109089a.zip |
UseManager: reject atoms with USE flags (bug 607872)
Reject atoms with USE flags in package.* files since
they trigger infinite recursion in config.setcpv().
Bug: https://bugs.gentoo.org/607872
-rw-r--r-- | pym/portage/package/ebuild/_config/UseManager.py | 5 | ||||
-rw-r--r-- | pym/portage/util/__init__.py | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py index 9ebd0f3ab..7302876ab 100644 --- a/pym/portage/package/ebuild/_config/UseManager.py +++ b/pym/portage/package/ebuild/_config/UseManager.py @@ -196,7 +196,8 @@ class UseManager(object): file_dict = grabdict_package(file_name, recursive=recursive, allow_wildcard=extended_syntax, allow_repo=extended_syntax, verify_eapi=(not extended_syntax), eapi=eapi, - eapi_default=eapi_default, allow_build_id=allow_build_id) + eapi_default=eapi_default, allow_build_id=allow_build_id, + allow_use=False) if eapi is not None and eapi_filter is not None and not eapi_filter(eapi): if file_dict: writemsg(_("--- EAPI '%s' does not support '%s': '%s'\n") % @@ -242,7 +243,7 @@ class UseManager(object): os.path.join(location, file_name), recursive=1, newlines=1, allow_wildcard=True, allow_repo=True, verify_eapi=False, - allow_build_id=True) + allow_build_id=True, allow_use=False) for k, v in pusedict.items(): l = [] use_expand_prefix = '' diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 45710ba72..d63d5f156 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -429,7 +429,7 @@ def read_corresponding_eapi_file(filename, default="0"): return eapi def grabdict_package(myfilename, juststrings=0, recursive=0, newlines=0, - allow_wildcard=False, allow_repo=False, allow_build_id=False, + allow_wildcard=False, allow_repo=False, allow_build_id=False, allow_use=True, verify_eapi=False, eapi=None, eapi_default="0"): """ Does the same thing as grabdict except it validates keys with isvalidatom()""" @@ -458,6 +458,10 @@ def grabdict_package(myfilename, juststrings=0, recursive=0, newlines=0, writemsg(_("--- Invalid atom in %s: %s\n") % (filename, e), noiselevel=-1) else: + if not allow_use and k.use: + writemsg(_("--- Atom is not allowed to have USE flag(s) in %s: %s\n") % (filename, k), + noiselevel=-1) + continue atoms.setdefault(k, []).extend(v) if juststrings: |