Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package brp-check-suse for openSUSE:Factory checked in at 2021-07-20 15:38:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/brp-check-suse (Old) and /work/SRC/openSUSE:Factory/.brp-check-suse.new.2632 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "brp-check-suse" Tue Jul 20 15:38:41 2021 rev:72 rq:904422 version:84.87+git20210706.41c04c1 Changes: -------- --- /work/SRC/openSUSE:Factory/brp-check-suse/brp-check-suse.changes 2021-06-13 23:05:40.419617637 +0200 +++ /work/SRC/openSUSE:Factory/.brp-check-suse.new.2632/brp-check-suse.changes 2021-07-20 15:38:53.793411474 +0200 @@ -1,0 +2,14 @@ +Tue Jul 06 18:21:27 UTC 2021 - co...@suse.com + +- Update to version 84.87+git20210706.41c04c1: + * Fix /etc/alternatives being white listed + +------------------------------------------------------------------- +Tue Jun 22 11:08:42 UTC 2021 - co...@suse.com + +- Update to version 84.87+git20210622.18841ca: + * Extend symlinks in buildroot (and test them) + * Move the exception handling of absolute links to C++ + * Revert "brp-25-symlink: Follow deeper symlinks to avoid false positives" + +------------------------------------------------------------------- Old: ---- brp-check-suse-84.87+git20210607.252083e.tar.xz New: ---- brp-check-suse-84.87+git20210706.41c04c1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ brp-check-suse.spec ++++++ --- /var/tmp/diff_new_pack.oHSVfx/_old 2021-07-20 15:38:54.389412540 +0200 +++ /var/tmp/diff_new_pack.oHSVfx/_new 2021-07-20 15:38:54.393412547 +0200 @@ -23,7 +23,7 @@ License: GPL-2.0-or-later Group: Development/Tools/Building Requires: perl -Version: 84.87+git20210607.252083e +Version: 84.87+git20210706.41c04c1 Release: 0 URL: https://github.com/openSUSE/brp-check-suse BuildRequires: gcc-c++ ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.oHSVfx/_old 2021-07-20 15:38:54.429412612 +0200 +++ /var/tmp/diff_new_pack.oHSVfx/_new 2021-07-20 15:38:54.429412612 +0200 @@ -1,5 +1,5 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/openSUSE/brp-check-suse.git</param> - <param name="changesrevision">823d04cde8dad5e0d28c62fa2a7e50d6f0a27d86</param></service> + <param name="changesrevision">ca403f6bb2c2727b4c37db643cf0c4f32becfd97</param></service> </servicedata> \ No newline at end of file ++++++ brp-check-suse-84.87+git20210607.252083e.tar.xz -> brp-check-suse-84.87+git20210706.41c04c1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/.gitignore new/brp-check-suse-84.87+git20210706.41c04c1/.gitignore --- old/brp-check-suse-84.87+git20210607.252083e/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/brp-check-suse-84.87+git20210706.41c04c1/.gitignore 2021-07-06 20:20:49.000000000 +0200 @@ -0,0 +1,2 @@ +prg-brp-symlink/brp-symlink +prg-brp-symlink/tests.new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/brp-25-symlink new/brp-check-suse-84.87+git20210706.41c04c1/brp-25-symlink --- old/brp-check-suse-84.87+git20210607.252083e/brp-25-symlink 2021-06-07 09:41:20.000000000 +0200 +++ new/brp-check-suse-84.87+git20210706.41c04c1/brp-25-symlink 2021-07-06 20:20:49.000000000 +0200 @@ -28,44 +28,6 @@ had_errors=0 -follow() { -# poor man's endless recursion checker - follow=0 - _follow $1 -} - -_follow() { - local file=$1 - local base=$(basename $file) - local dir=$(dirname $file) - local link - - test $(( ++follow )) -gt 16 && return 1 - test "$dir" = "/" && return 1 - if test -L "$dir"; then - link=$(readlink $dir) || return 1 - elif test -L "./$dir"; then - link=$(readlink ./$dir) || return 1 - fi - if test -n "$link"; then - if [[ $link =~ ^/ ]]; then - dir=$link - else - dir=$(dirname $dir)/$link - dir=$(realpath -m $dir) - fi - if test -e ./$dir/$base || test -e $dir/$base; then - echo $dir/$base - return 0 - fi - fi - if dir=$(_follow $dir) && test -e ./$dir/$base -o -e $dir/$base; then - echo $dir/$base - return 0 - fi - return 1 -} - while IFS="|" read link link_orig link_dest link_absolut do if test "$link" = "$link_dest"; then @@ -75,18 +37,11 @@ fi case "$link_absolut" in - /etc/alternatives/*) # update alternative links are special - link_dest=$link_absolut - ;; /opt/kde3/share/doc*/HTML/*/common) # white listed for not existant ;; /usr/share/doc/kde/HTML/*/common) # white listed for not existant ;; - /proc/*|/dev/*|/sys/*) # links pointing into kernel file system should be absolute - link_dest=$link_absolut - ;; - /usr/src/linux*) # bsc#1186710 - usrmerge in combination of fixed /lib/modules - link_dest=$link_absolut + /etc/alternatives/*) # white listed (ghosts) ;; ${RPM_BUILD_ROOT}*) echo "ERROR: Link $link -> $link_orig points inside build root!" @@ -102,14 +57,12 @@ ;; *) if test ! -L ./"$link_absolut" && test ! -e "$link_absolut" && test ! -e ./"$link_absolut"; then - if ! follow $link_absolut >/dev/null; then - echo "ERROR: link target doesn't exist (neither in build root nor in installed system):" - echo " $link -> $link_orig" - echo "Add the package providing the target to BuildRequires and Requires" - if [ "$NO_BRP_STALE_LINK_ERROR" != "yes" ]; then - had_errors=1 - continue - fi + echo "ERROR: link target doesn't exist (neither in build root nor in installed system):" + echo " $link -> $link_orig" + echo "Add the package providing the target to BuildRequires and Requires" + if [ "$NO_BRP_STALE_LINK_ERROR" != "yes" ]; then + had_errors=1 + continue fi fi ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/Makefile new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/Makefile --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/Makefile 2021-06-07 09:41:20.000000000 +0200 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/Makefile 2021-07-06 20:20:49.000000000 +0200 @@ -1,4 +1,4 @@ -CXXFLAGS ?= -O2 -Wall +CXXFLAGS ?= -O2 -Wall -g3 CXX ?= g++ all: brp-symlink @@ -7,6 +7,8 @@ $(CXX) $(CXXFLAGS) -o $@ $^ check: brp-symlink - ./brp-symlink < tests.in > tests.new + ./brp-symlink -b testdir < tests.in > tests.new diff -u tests.out tests.new +format: + clang-format --style=WebKit -i main.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/main.cpp new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/main.cpp --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/main.cpp 2021-06-07 09:41:20.000000000 +0200 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/main.cpp 2021-07-06 20:20:49.000000000 +0200 @@ -1,7 +1,9 @@ #include <iostream> #include <iterator> +#include <limits.h> #include <sstream> #include <string> +#include <unistd.h> #include <vector> // synopsis: read from stdin lines per link @@ -11,10 +13,13 @@ // IFS=| link link_orig link_dest link_absolut // NOTE: -// the actual file system content is of no concern here +// it's important to run this with the root as cwd +// so the link expansion is done correctly using namespace std; +string buildroot = "."; + string append(const string& p1, const string& p2) { char sep = '/'; @@ -31,7 +36,7 @@ return (tmp + p2); } -vector<string> split_paths(const string &path) +vector<string> split_paths(const string& path) { string token; vector<string> paths; @@ -89,14 +94,62 @@ return merge_paths(paths); } -void check_link(const string& link, const string& link_dest) +string check_exceptions(const string& link_relative, const string& link_absolute) +{ + // update alternative links are special + if (!link_absolute.rfind("/etc/alternatives/", 0)) { + return link_absolute; + } + // bsc#1186710 - usrmerge in combination of hardcoded /lib/modules + if (!link_absolute.rfind("/usr/src/linux", 0)) { + return link_absolute; + } + // links pointing into kernel file system should be absolute + if (!link_absolute.rfind("/proc/", 0) || !link_absolute.rfind("/dev/", 0) || !link_absolute.rfind("/sys/", 0)) { + return link_absolute; + } + return link_relative; +} + +// expand the file against root and buildroot +string follow(const string& path) +{ + vector<string> paths = split_paths(path); + vector<string>::const_iterator it = paths.begin(); + string new_path = ""; + for (; it != paths.end(); it++) { + if (!it->length()) + continue; + string tmp_path = new_path + "/" + *it; + + char buffer[PATH_MAX]; + string tmp_path_in_buildroot = buildroot + "/" + tmp_path; + ssize_t result = readlink(tmp_path_in_buildroot.c_str(), buffer, PATH_MAX); + if (result > 0) { + buffer[result] = 0; + // for absolute links within buildroot we need to recurse + if (buffer[0] == '/') { + new_path.assign(buffer); + for (it++; it != paths.end(); it++) { + new_path += "/" + *it; + } + return follow(new_path); + } + } + new_path = tmp_path; + } + return path; +} + +void check_link(const string& link, const string& link_old_dest) { - string link_dest_path = append(link, link_dest); + string link_dest_path = append(link, link_old_dest); string link_dest_abs = normalize(link_dest_path); + string link_new_dest = relative(normalize(link), link_dest_abs); cout << link << "|" - << link_dest << "|" - << relative(normalize(link), link_dest_abs) << "|" - << link_dest_abs << endl; + << link_old_dest << "|" + << check_exceptions(link_new_dest, link_dest_abs) << "|" + << follow(link_dest_abs) << endl; } void work_line(const string& line) @@ -107,6 +160,25 @@ int main(int argc, char** argv) { + while (true) { + switch (getopt(argc, argv, "r:b:")) { + case '?': + case 'h': + default: + cerr << argv[0] << " [-b <buildroot>]\n"; + cerr << " buildroot defaults to .\n"; + return -1; + + case -1: + break; + + case 'b': + buildroot.assign(optarg); + continue; + } + break; + } + for (string line; getline(cin, line);) { work_line(line); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/testdir/etc/alternatives/subdir new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/testdir/etc/alternatives/subdir --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/testdir/etc/alternatives/subdir 1970-01-01 01:00:00.000000000 +0100 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/testdir/etc/alternatives/subdir 2021-07-20 15:38:54.497412733 +0200 @@ -0,0 +1 @@ +symbolic link to usr/lib64/libsub diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/testdir/usr/lib64/subdir new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/testdir/usr/lib64/subdir --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/testdir/usr/lib64/subdir 1970-01-01 01:00:00.000000000 +0100 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/testdir/usr/lib64/subdir 2021-07-20 15:38:54.493412726 +0200 @@ -0,0 +1 @@ +symbolic link to /etc/alternatives/subdir diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/tests.in new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/tests.in --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/tests.in 2021-06-07 09:41:20.000000000 +0200 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/tests.in 2021-07-06 20:20:49.000000000 +0200 @@ -1374,3 +1374,7 @@ bin/ex|/usr/bin/vim bin/keyctl|//usr/bin/keyctl a/b/c/d/link|.././../O +etc/alternatives/subdir|/usr/lib64/libsub +usr/lib64/libfoo.so|subdir/libfoo.so +usr/lib64/libsub/libfoo.so|libfoo.so.0 +usr/lib64/subdir|/etc/alternatives/subdir \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/tests.out new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/tests.out --- old/brp-check-suse-84.87+git20210607.252083e/prg-brp-symlink/tests.out 2021-06-07 09:41:20.000000000 +0200 +++ new/brp-check-suse-84.87+git20210706.41c04c1/prg-brp-symlink/tests.out 2021-07-06 20:20:49.000000000 +0200 @@ -59,14 +59,14 @@ /usr/bin/mmd|mtools|mtools|/usr/bin/mtools /usr/bin/sg|newgrp|newgrp|/usr/bin/newgrp /usr/bin/mmount|mtools|mtools|/usr/bin/mtools -/usr/bin/awk|/etc/alternatives/usr-bin-awk|../../etc/alternatives/usr-bin-awk|/etc/alternatives/usr-bin-awk +/usr/bin/awk|/etc/alternatives/usr-bin-awk|/etc/alternatives/usr-bin-awk|/etc/alternatives/usr-bin-awk /usr/bin/mmove|mtools|mtools|/usr/bin/mtools /usr/bin/mpartition|mtools|mtools|/usr/bin/mtools /usr/bin/mrd|mtools|mtools|/usr/bin/mtools /usr/bin/mren|mtools|mtools|/usr/bin/mtools /usr/bin/mshortname|mtools|mtools|/usr/bin/mtools /usr/bin/mshowfat|mtools|mtools|/usr/bin/mtools -/usr/bin/ld|/etc/alternatives/ld|../../etc/alternatives/ld|/etc/alternatives/ld +/usr/bin/ld|/etc/alternatives/ld|/etc/alternatives/ld|/etc/alternatives/ld /usr/bin/mtoolstest|mtools|mtools|/usr/bin/mtools /usr/bin/mtype|mtools|mtools|/usr/bin/mtools /usr/bin/mzip|mtools|mtools|/usr/bin/mtools @@ -91,10 +91,10 @@ /usr/bin/repo2solv.sh|repo2solv|repo2solv|/usr/bin/repo2solv /usr/bin/docker-init|catatonit|catatonit|/usr/bin/catatonit /usr/bin/yzpper|zypper|zypper|/usr/bin/zypper -/usr/bin/createrepo|/etc/alternatives/createrepo|../../etc/alternatives/createrepo|/etc/alternatives/createrepo -/usr/bin/mergerepo|/etc/alternatives/mergerepo|../../etc/alternatives/mergerepo|/etc/alternatives/mergerepo -/usr/bin/modifyrepo|/etc/alternatives/modifyrepo|../../etc/alternatives/modifyrepo|/etc/alternatives/modifyrepo -/usr/bin/sqliterepo|/etc/alternatives/sqliterepo|../../etc/alternatives/sqliterepo|/etc/alternatives/sqliterepo +/usr/bin/createrepo|/etc/alternatives/createrepo|/etc/alternatives/createrepo|/etc/alternatives/createrepo +/usr/bin/mergerepo|/etc/alternatives/mergerepo|/etc/alternatives/mergerepo|/etc/alternatives/mergerepo +/usr/bin/modifyrepo|/etc/alternatives/modifyrepo|/etc/alternatives/modifyrepo|/etc/alternatives/modifyrepo +/usr/bin/sqliterepo|/etc/alternatives/sqliterepo|/etc/alternatives/sqliterepo|/etc/alternatives/sqliterepo /usr/include/asm|arch-x86/asm|arch-x86/asm|/usr/include/arch-x86/asm /usr/lib/restricted/bin/hostname|/bin/hostname|../../../../bin/hostname|/bin/hostname /usr/lib/sysctl.d/99-sysctl.conf|/etc/sysctl.conf|../../../etc/sysctl.conf|/etc/sysctl.conf @@ -394,7 +394,7 @@ /usr/share/man/man1/cpp.1.gz|cpp-7.1.gz|cpp-7.1.gz|/usr/share/man/man1/cpp-7.1.gz /usr/share/man/man1/reset.1.gz|tset.1.gz|tset.1.gz|/usr/share/man/man1/tset.1.gz /usr/share/man/man1/openssl-req.1ssl.gz|req.1ssl.gz|req.1ssl.gz|/usr/share/man/man1/req.1ssl.gz -/usr/share/man/man1/awk.1.gz|/etc/alternatives/awk.1.gz|../../../../etc/alternatives/awk.1.gz|/etc/alternatives/awk.1.gz +/usr/share/man/man1/awk.1.gz|/etc/alternatives/awk.1.gz|/etc/alternatives/awk.1.gz|/etc/alternatives/awk.1.gz /usr/share/man/man1/openssl-rsa.1ssl.gz|rsa.1ssl.gz|rsa.1ssl.gz|/usr/share/man/man1/rsa.1ssl.gz /usr/share/man/man1/openssl-ciphers.1ssl.gz|ciphers.1ssl.gz|ciphers.1ssl.gz|/usr/share/man/man1/ciphers.1ssl.gz /usr/share/man/man1/openssl-ts.1ssl.gz|ts.1ssl.gz|ts.1ssl.gz|/usr/share/man/man1/ts.1ssl.gz @@ -477,12 +477,12 @@ /usr/share/man/man8/utempter_remove_added_record.8.gz|utempter.8.gz|utempter.8.gz|/usr/share/man/man8/utempter.8.gz /usr/share/man/man8/utempter_remove_record.8.gz|utempter.8.gz|utempter.8.gz|/usr/share/man/man8/utempter.8.gz /usr/share/man/man8/utempter_set_helper.8.gz|utempter.8.gz|utempter.8.gz|/usr/share/man/man8/utempter.8.gz -/usr/share/man/man8/createrepo.8.gz|/etc/alternatives/createrepo.8.gz|../../../../etc/alternatives/createrepo.8.gz|/etc/alternatives/createrepo.8.gz +/usr/share/man/man8/createrepo.8.gz|/etc/alternatives/createrepo.8.gz|/etc/alternatives/createrepo.8.gz|/etc/alternatives/createrepo.8.gz /usr/share/man/man8/uname26.8.gz|i386.8.gz|i386.8.gz|/usr/share/man/man8/i386.8.gz -/usr/share/man/man8/mergerepo.8.gz|/etc/alternatives/mergerepo.8.gz|../../../../etc/alternatives/mergerepo.8.gz|/etc/alternatives/mergerepo.8.gz -/usr/share/man/man8/modifyrepo.8.gz|/etc/alternatives/modifyrepo.8.gz|../../../../etc/alternatives/modifyrepo.8.gz|/etc/alternatives/modifyrepo.8.gz +/usr/share/man/man8/mergerepo.8.gz|/etc/alternatives/mergerepo.8.gz|/etc/alternatives/mergerepo.8.gz|/etc/alternatives/mergerepo.8.gz +/usr/share/man/man8/modifyrepo.8.gz|/etc/alternatives/modifyrepo.8.gz|/etc/alternatives/modifyrepo.8.gz|/etc/alternatives/modifyrepo.8.gz /usr/share/man/man8/x86_64.8.gz|i386.8.gz|i386.8.gz|/usr/share/man/man8/i386.8.gz -/usr/share/man/man8/sqliterepo.8.gz|/etc/alternatives/sqliterepo.8.gz|../../../../etc/alternatives/sqliterepo.8.gz|/etc/alternatives/sqliterepo.8.gz +/usr/share/man/man8/sqliterepo.8.gz|/etc/alternatives/sqliterepo.8.gz|/etc/alternatives/sqliterepo.8.gz|/etc/alternatives/sqliterepo.8.gz /usr/share/man/man8/linux32.8.gz|i386.8.gz|i386.8.gz|/usr/share/man/man8/i386.8.gz /usr/share/man/man8/linux64.8.gz|i386.8.gz|i386.8.gz|/usr/share/man/man8/i386.8.gz /usr/share/bash/helpfiles/source|dot|dot|/usr/share/bash/helpfiles/dot @@ -1168,10 +1168,10 @@ /var/mail|spool/mail|spool/mail|/var/spool/mail /var/run|/run|../run|/run /var/lock|/run/lock|../run/lock|/run/lock -/dev/fd|/proc/self/fd|../proc/self/fd|/proc/self/fd -/dev/stdin|fd/0|fd/0|/dev/fd/0 -/dev/stdout|fd/1|fd/1|/dev/fd/1 -/dev/stderr|fd/2|fd/2|/dev/fd/2 +/dev/fd|/proc/self/fd|/proc/self/fd|/proc/self/fd +/dev/stdin|fd/0|/dev/fd/0|/dev/fd/0 +/dev/stdout|fd/1|/dev/fd/1|/dev/fd/1 +/dev/stderr|fd/2|/dev/fd/2|/dev/fd/2 /etc/xdg/systemd/user|../../systemd/user|../../systemd/user|/etc/systemd/user /etc/termcap|/usr/share/misc/termcap|../usr/share/misc/termcap|/usr/share/misc/termcap /etc/alternatives/awk|/usr/bin/gawk|../../usr/bin/gawk|/usr/bin/gawk @@ -1232,7 +1232,7 @@ /bin/ip|/usr/sbin/ip|../usr/sbin/ip|/usr/sbin/ip /bin/cpio|/usr/bin/cpio|../usr/bin/cpio|/usr/bin/cpio /bin/find|/usr/bin/find|../usr/bin/find|/usr/bin/find -/bin/awk|/etc/alternatives/awk|../etc/alternatives/awk|/etc/alternatives/awk +/bin/awk|/etc/alternatives/awk|/etc/alternatives/awk|/etc/alternatives/awk /bin/gawk|/usr/bin/gawk|../usr/bin/gawk|/usr/bin/gawk /bin/gunzip|/usr/bin/gunzip|../usr/bin/gunzip|/usr/bin/gunzip /bin/gzip|/usr/bin/gzip|../usr/bin/gzip|/usr/bin/gzip @@ -1302,7 +1302,7 @@ /lib64/libext2fs.so.2.4|/usr/lib64/libext2fs.so.2.4|../usr/lib64/libext2fs.so.2.4|/usr/lib64/libext2fs.so.2.4 /lib64/libtirpc.so.3|libtirpc.so.3.0.0|libtirpc.so.3.0.0|/lib64/libtirpc.so.3.0.0 /.build.packages|usr/src/packages|usr/src/packages|/usr/src/packages -/usr/bin/vim|/etc/alternatives/vim|../../etc/alternatives/vim|/etc/alternatives/vim +/usr/bin/vim|/etc/alternatives/vim|/etc/alternatives/vim|/etc/alternatives/vim /usr/bin/ex|vim|vim|/usr/bin/vim /usr/bin/view|vim|vim|/usr/bin/vim /usr/bin/rvim|vim|vim|/usr/bin/vim @@ -1374,3 +1374,7 @@ /bin/ex|/usr/bin/vim|../usr/bin/vim|/usr/bin/vim /bin/keyctl|//usr/bin/keyctl|../usr/bin/keyctl|/usr/bin/keyctl /a/b/c/d/link|.././../O|../../O|/a/b/O +/etc/alternatives/subdir|/usr/lib64/libsub|../../usr/lib64/libsub|/usr/lib64/libsub +/usr/lib64/libfoo.so|subdir/libfoo.so|subdir/libfoo.so|/etc/alternatives/subdir/libfoo.so +/usr/lib64/libsub/libfoo.so|libfoo.so.0|libfoo.so.0|/usr/lib64/libsub/libfoo.so.0 +/usr/lib64/subdir|/etc/alternatives/subdir|/etc/alternatives/subdir|/etc/alternatives/subdir