From: Zac Medico Date: Thu, 21 Jun 2007 02:20:17 +0000 (-0000) Subject: In dblink._security_check(), use os.path.realpath to make sure that the same path... X-Git-Tag: v2.1.3~200 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9ff995078c534eca001138915a5e665380974803;p=portage.git In dblink._security_check(), use os.path.realpath to make sure that the same path isn't counted twice. (trunk r6894) svn path=/main/branches/2.1.2/; revision=6895 --- diff --git a/pym/portage.py b/pym/portage.py index 054435bff..fe99c0c9b 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -7322,6 +7322,7 @@ class dblink: for dblnk in installed_instances: file_paths.update(dblnk.getcontents()) inode_map = {} + real_paths = set() for path in file_paths: try: s = os.lstat(path) @@ -7330,8 +7331,13 @@ class dblink: raise del e continue - if stat.S_ISREG(s.st_mode) and \ - s.st_nlink > 1 and \ + if not stat.S_ISREG(s.st_mode): + continue + path = os.path.realpath(path) + if path in real_paths: + continue + real_paths.add(path) + if s.st_nlink > 1 and \ s.st_mode & (stat.S_ISUID | stat.S_ISGID): k = (s.st_dev, s.st_ino) inode_map.setdefault(k, []).append((path, s))