diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-05-29 10:30:36 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-12 22:50:46 +0100 |
commit | 0ac9c80e0866b095b2c2376801224a9c2c1ef39e (patch) | |
tree | fab40becbf5ea40d492c04d6e43ae9ed5f826430 /bitbake/lib/bb/data_smart.py | |
parent | 2dbb067eba4efe3216fd4dbc0103c63f883d8ef4 (diff) | |
download | openembedded-core-contrib-0ac9c80e0866b095b2c2376801224a9c2c1ef39e.tar.gz |
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>
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index c800a9a106..c91b51f686 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -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): |