[Python-checkins] python/dist/src/Lib rexec.py,1.28.4.2,1.28.4.3
gvanrossum@users.sourceforge.net
gvanrossum@users.sourceforge.net
Sat, 14 Sep 2002 23:18:31 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv27999
Modified Files:
Tag: release21-maint
rexec.py
Log Message:
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.)
Index: rexec.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/rexec.py,v
retrieving revision 1.28.4.2
retrieving revision 1.28.4.3
diff -C2 -d -r1.28.4.2 -r1.28.4.3
*** rexec.py 31 May 2002 21:19:53 -0000 1.28.4.2
--- rexec.py 15 Sep 2002 06:18:29 -0000 1.28.4.3
***************
*** 262,268 ****
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.__builtins__ = self.modules['__builtin__']
return m
--- 262,268 ----
def add_module(self, 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