summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Keen <keenerd@gmail.com>2017-03-22 11:16:03 -0400
committerKyle Keen <keenerd@gmail.com>2017-03-22 11:16:03 -0400
commit1a44d4e747e8a9cec372b7df6c6620ef02a6481f (patch)
tree05f77278993bd3bc225303ee807949ced32ef5c5
parent95565276ab9e69dece302a1226cd85bb49c093dd (diff)
downloadnamcap-1a44d4e747e8a9cec372b7df6c6620ef02a6481f.tar.gz
namcap-1a44d4e747e8a9cec372b7df6c6620ef02a6481f.zip
Packages can symlink to files in depenencies (FS#53282)
Signed-off-by: Kyle Keen <keenerd@gmail.com>
-rw-r--r--Namcap/rules/symlink.py10
-rw-r--r--Namcap/tests/package/test_symlink.py3
2 files changed, 12 insertions, 1 deletions
diff --git a/Namcap/rules/symlink.py b/Namcap/rules/symlink.py
index c43e498..f595bc5 100644
--- a/Namcap/rules/symlink.py
+++ b/Namcap/rules/symlink.py
@@ -18,12 +18,20 @@
#
import os
from Namcap.ruleclass import *
+from Namcap.package import load_from_db
class package(TarballRule):
name = "symlink"
description = "Checks that symlinks point to the right place"
def analyze(self, pkginfo, tar):
- filenames = [s.name for s in tar]
+ filenames = set(s.name for s in tar)
+ depfilenames = set()
+ for d in pkginfo['depends']:
+ p = load_from_db(d)
+ if not p:
+ continue
+ depfilenames |= set(name for name,_,_ in p['files'])
+ filenames |= depfilenames
for i in tar:
if i.issym():
self.infos.append(("symlink-found %s points to %s", (i.name, i.linkname)))
diff --git a/Namcap/tests/package/test_symlink.py b/Namcap/tests/package/test_symlink.py
index 43d20c5..92c8d51 100644
--- a/Namcap/tests/package/test_symlink.py
+++ b/Namcap/tests/package/test_symlink.py
@@ -46,6 +46,7 @@ package() {
ln -s ../nofile "${pkgdir}/usr/share/somelink2"
ln -s //usr/share/somedata "${pkgdir}/usr/share/validlink"
ln -s ../share/somedata "${pkgdir}/usr/share/validlink2"
+ ln -s /usr/include/math.h "${pkgdir}/usr/share/deplink"
}
"""
def test_symlink_files(self):
@@ -74,6 +75,8 @@ package() {
("usr/share/validlink", "//usr/share/somedata")),
("symlink-found %s points to %s",
("usr/share/validlink2", "../share/somedata")),
+ ("symlink-found %s points to %s",
+ ("usr/share/deplink", "/usr/include/math.h")),
]))
# vim: set ts=4 sw=4 noet: