Message125429
Thanks for the patch.
There seems to be a race remaining here:
+ try:
+ if os.path.islink(path):
+ # symlinks to directories are forbidden, see bug #1669
+ raise OSError("Cannot call rmtree on a symbolic link")
+ except OSError:
+ onerror(os.path.islink, path, sys.exc_info())
+ # can't continue even if onerror hook returns
+ return
+ fd = os.open(path, os.O_RDONLY)
Someone could change `path` to be a symlink between the calls to islink() and open(). You probably need to stat the fd instead.
Some other things:
- if close() is meant to be a private helper, it should be named _close()
- instead of a bare "except" in close(), use "except EnvironmentError" or "except OSError"
I haven't looked at the tests yet. |
|
Date |
User |
Action |
Args |
2011-01-05 15:21:18 | pitrou | set | recipients:
+ pitrou, tarek, eric.araujo, mrts, teamnoir, rosslagerwall |
2011-01-05 15:21:18 | pitrou | set | messageid: <1294240878.18.0.239867867805.issue4489@psf.upfronthosting.co.za> |
2011-01-05 15:21:16 | pitrou | link | issue4489 messages |
2011-01-05 15:21:16 | pitrou | create | |
|