From 0ac9c80e0866b095b2c2376801224a9c2c1ef39e Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 29 May 2015 10:30:36 +0000 Subject: 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 --- bitbake/lib/bb/data_smart.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'bitbake/lib/bb/data_smart.py') 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): -- cgit v1.2.3-54-g00ecf