On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote:

>   def do_something(filename):
>     if not os.access(filename,os.R_OK):
>       return err(...)
>     f = open(filename)
>     ...


You're running on a multitasking modern machine, right? What happens when 
some other process deletes filename, or changes its permissions, in the 
time after you check for access but before you actually open it?

This isn't just a theoretical risk. There's a whole class of errors and 
security holes based on similar race conditions. I find it amusing that 
you consider it "sloppy" to deal with errors raised when actually opening 
a file, but then recommend a technique that has a well-known failure mode.

That's not to say that I never use such techniques myself. For quick and 
dirty scripts, where I can tolerate the risk of some other process moving 
a file behind my back, I've been known to do something similar.



-- 
Steven
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to