From 1caa07200779be05321149e89e449b3d979f7bb5 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 15 Sep 2002 06:18:29 +0000 Subject: Backport (the relevant part of) rexec.py 1.41. Address SF bug #577530: del __builtins__ breaks out of rexec Using the suggestion there: add_module() forces __builtin__ back; this fixes r_exec, r_eval, r_execfile. This does not mean that rexec is now considered safe! But for those willing to take the risk, it's safer than before. (Note that a safety analysis of the code module would be wise if you plan to use the interactive console for real -- I've only ever used it to play with restricted mode.) --- Lib/rexec.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/rexec.py b/Lib/rexec.py index ccc53df..5b39f9c 100644 --- a/Lib/rexec.py +++ b/Lib/rexec.py @@ -261,9 +261,9 @@ class RExec(ihooks._Verbose): # Add a module -- return an existing module or create one def add_module(self, mname): - if self.modules.has_key(mname): - return self.modules[mname] - self.modules[mname] = m = self.hooks.new_module(mname) + m = self.modules.get(mname) + if m is None: + self.modules[mname] = m = self.hooks.new_module(mname) m.__builtins__ = self.modules['__builtin__'] return m -- cgit v0.12