From e43bfafdd832a0b700eda0abe0713a4f8b21c714 Mon Sep 17 00:00:00 2001 From: Daira Hopwood <daira@jacaranda.org> Date: Thu, 22 Oct 2015 14:28:26 +0100 Subject: [PATCH] Fix infinite loop in should_ignore_path for absolute paths. Signed-off-by: Daira Hopwood <daira@jacaranda.org> --- src/allmydata/magicpath.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/allmydata/magicpath.py b/src/allmydata/magicpath.py index ba15ed58..53e669b6 100644 --- a/src/allmydata/magicpath.py +++ b/src/allmydata/magicpath.py @@ -2,7 +2,7 @@ import re import os.path -from allmydata.util.assertutil import precondition +from allmydata.util.assertutil import precondition, _assert def path2magic(path): return re.sub(ur'[/@]', lambda m: {u'/': u'@_', u'@': u'@@'}[m.group(0)], path) @@ -20,8 +20,14 @@ def should_ignore_file(path_u): for suffix in IGNORE_SUFFIXES: if path_u.endswith(suffix): return True + while path_u != u"": + oldpath_u = path_u path_u, tail_u = os.path.split(path_u) if tail_u.startswith(u"."): return True + if path_u == oldpath_u: + return True # the path was absolute + _assert(len(path_u) < len(oldpath_u), path_u=path_u, oldpath_u=oldpath_u) + return False -- 2.45.2