bitbake: data_smart: Improve override recursion handling

When expanding OVERRIDES, its possible someone might try and override a variable
that is used in OVERRIDES. This could lead to infinite recursion. Add in
guards against this.

(Bitbake rev: 07d773369f571028c2cf82dd1f65d9731af6d00e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2015-05-29 10:30:36 +00:00
parent 2dbb067eba
commit 0ac9c80e08
1 changed files with 6 additions and 0 deletions

View File

@ -313,6 +313,7 @@ class DataSmart(MutableMapping):
self.overridedata = {}
self.overrides = None
self.overridevars = set(["OVERRIDES", "FILE"])
self.inoverride = False
def enableTracking(self):
self._tracking = True
@ -363,8 +364,13 @@ class DataSmart(MutableMapping):
def need_overrides(self):
if self.overrides is None:
if self.inoverride:
return
self.inoverride = True
# Can end up here recursively so setup dummy values
self.overrides = []
self.overrides = (self.getVar("OVERRIDES", True) or "").split(":") or []
self.inoverride = False
self.expand_cache = {}
def initVar(self, var):