From c1db01d7eb147af48a385457afbbbfdfafeac288 Mon Sep 17 00:00:00 2001 From: Zoran Zaric Date: Fri, 7 Jan 2011 12:16:24 +0100 Subject: [PATCH] Fix a bug in strip_path when prefix is a symlink helpers.realpath() wasn't the right choice for path normalization. The prefix itself can be a symlink, too. Now we use os.path.realpath(), which also follows symlinks for the last element. Signed-off-by: Zoran Zaric --- lib/bup/helpers.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/bup/helpers.py b/lib/bup/helpers.py index cb378a9..7c11a92 100644 --- a/lib/bup/helpers.py +++ b/lib/bup/helpers.py @@ -421,9 +421,9 @@ def strip_path(prefix, path): if prefix == None: raise Exception('no path given') - normalized_prefix = realpath(prefix) + normalized_prefix = os.path.realpath(prefix) debug2("normalized_prefix: %s\n" % normalized_prefix) - normalized_path = realpath(path) + normalized_path = os.path.realpath(path) debug2("normalized_path: %s\n" % normalized_path) if normalized_path.startswith(normalized_prefix): return normalized_path[len(normalized_prefix):] @@ -438,10 +438,11 @@ def strip_base_path(path, base_paths): Iterates over all base_paths from long to short, to prevent that a too short base_path is removed. """ + normalized_path = os.path.realpath(path) sorted_base_paths = sorted(base_paths, key=len, reverse=True) for bp in sorted_base_paths: - if path.startswith(realpath(bp)): - return strip_path(bp, path) + if normalized_path.startswith(os.path.realpath(bp)): + return strip_path(bp, normalized_path) return path -- 2.39.2