On 1/22/18 3:22 AM, ken...@gameofy.com wrote:


I'm using exec() to run a (multi-line) string of python code. If an exception occurs, I get a traceback containing a stack frame for the string. I've labeled the code object with a "file name" so I can identify it easily, and when I debug, I find that I can interact with the context of that stack frame, which is pretty handy.

What I would like to also be able to do is make the code string visible to the debugger so I can look at and step through the code in the string as if it were from a python file.

Lest this topic forks into a security discussion, I'll just add that for my purposes the data source is trusted. If you really want to talk about the security of using exec and eval, fine, but start another thread (BTW, I've written a simple secure eval())....


I haven't tried this, but what if you write the string to a temporary file, and then claim that the code came from that file? Code objects are immutable, so you'll need to recompile a new code object, but then you can poke that object into the frame (I think?).  It will be fiddly, and may not work at all, as is typical with hacking at this level of the interpreter.

I'm still interested in your simple secure eval if you have the time to tell us about it.

--Ned.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to