From 6626322283d4b04da4546940f3857c43d0750272 Mon Sep 17 00:00:00 2001 From: Mark Payne Date: Mon, 28 Aug 2017 15:37:34 -0400 Subject: [PATCH] Add Loop Counter to __addGroupThermoData Prevents the while loop from repeating indefinitely. --- rmgpy/data/thermo.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rmgpy/data/thermo.py b/rmgpy/data/thermo.py index c821468e5ae..cfacafd2507 100644 --- a/rmgpy/data/thermo.py +++ b/rmgpy/data/thermo.py @@ -1740,7 +1740,14 @@ def __addGroupThermoData(self, thermoData, database, molecule, atom): data = node.data comment = node.label + loop_count = 0 while isinstance(data, basestring): + loop_count += 1 + if loop_count > 100: + raise DatabaseError("Maximum iterations reached while following thermo group data pointers. A circular" + " reference may exist. Last node was {0} pointing to group called {1} in " + "database {2}".format(node.label, data, database.label)) + for entry in database.entries.itervalues(): if entry.label == data: data = entry.data