summaryrefslogtreecommitdiffstats
path: root/Lib/shutil.py
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2004-06-19 21:11:35 (GMT)
committerBrett Cannon <bcannon@gmail.com>2004-06-19 21:11:35 (GMT)
commit1c3fa18be76d1bcddb2de516913f46a32c5ed860 (patch)
tree475daa275d1e5576db99336f2397f6318f0275ea /Lib/shutil.py
parentb46ed71d706d2f94552e13664c08706421263856 (diff)
downloadcpython-1c3fa18be76d1bcddb2de516913f46a32c5ed860.zip
cpython-1c3fa18be76d1bcddb2de516913f46a32c5ed860.tar.gz
cpython-1c3fa18be76d1bcddb2de516913f46a32c5ed860.tar.bz2
shutil.move() will raise an exception when trying to move a directory into
itself. Closes bug #919012 . Thanks Johannes Gijsbers.
Diffstat (limited to 'Lib/shutil.py')
-rw-r--r--Lib/shutil.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 5341786..10b7a27 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -8,6 +8,7 @@ import os
import sys
import stat
import exceptions
+from os.path import abspath
__all__ = ["copyfileobj","copyfile","copymode","copystat","copy","copy2",
"copytree","move","rmtree","Error"]
@@ -164,8 +165,13 @@ def move(src, dst):
os.rename(src, dst)
except OSError:
if os.path.isdir(src):
+ if destinsrc(src, dst):
+ raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
copytree(src, dst, symlinks=True)
rmtree(src)
else:
copy2(src,dst)
os.unlink(src)
+
+def destinsrc(src, dst):
+ return abspath(dst).startswith(abspath(src))