Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/rpm
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: check-rpaths-worker
#! /bin/bash # Copyright (C) 2004 Enrico Scholz
# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA fail= already_shown=0 # effect of this expression is obviously: # * match paths beginning with: # - $SOMETHING/
/.. # - /
/.. # * but not paths beginning with # - $SOMETHING/.. # - $SOMETHING/../../../..... BADNESS_EXPR_32='\(\(\$[^/]\+\)\?\(/.*\)\?/\(\([^.][^/]*\)\|\(\.[^./][^/]*\)\|\(\.\.[^/]\+\)\)\)/\.\.\(/.*\)\?$' function showHint() { test "$already_shown" -eq 0 || return already_shown=1 cat <
&2 ******************************************************************************* * * WARNING: 'check-rpaths' detected a broken RPATH OR RUNPATH and will cause * 'rpmbuild' to fail. To ignore these errors, you can set the * '\$QA_RPATHS' environment variable which is a bitmask allowing the * values below. The current value of QA_RPATHS is $(printf '0x%04x' $QA_RPATHS). * * 0x0001 ... standard RPATHs (e.g. /usr/lib); such RPATHs are a minor * issue but are introducing redundant searchpaths without * providing a benefit. They can also cause errors in multilib * environments. * 0x0002 ... invalid RPATHs; these are RPATHs which are neither absolute * nor relative filenames and can therefore be a SECURITY risk * 0x0004 ... insecure RPATHs; these are relative RPATHs which are a * SECURITY risk * 0x0008 ... the special '\$ORIGIN' RPATHs are appearing after other * RPATHs; this is just a minor issue but usually unwanted * 0x0010 ... the RPATH is empty; there is no reason for such RPATHs * and they cause unneeded work while loading libraries * 0x0020 ... an RPATH references '..' of an absolute path; this will break * the functionality when the path before '..' is a symlink * * * Examples: * - to ignore standard and empty RPATHs, execute 'rpmbuild' like * \$ QA_RPATHS=\$(( 0x0001|0x0010 )) rpmbuild my-package.src.rpm * - to check existing files, set \$RPM_BUILD_ROOT and execute check-rpaths like * \$ RPM_BUILD_ROOT=
/usr/lib/rpm/check-rpaths * ******************************************************************************* EOF } function msg() { local val=$1 local cmp=$2 local msg= local fail= local code test $[ $val & $cmp ] -ne 0 || return 0 code=$(printf '%04x' $cmp) if test $[ $val & ~$QA_RPATHS ] -eq 0; then msg="WARNING" else showHint msg="ERROR " fail=1 fi shift 2 echo "$msg $code: $@" >&2 test -z "$fail" } function check_rpath() { pos=0 rpath=$(DEBUGINFOD_URLS="" readelf -W -d "$1" 2>/dev/null | LANG=C grep -E "\((RPATH|RUNPATH)\).*:") || return 0 rpath_orig="$rpath" rpath=$(echo "$rpath" | LANG=C sed -e "s!.*\(RPATH\|RUNPATH\).*: \[\(.*\)\]!\2!p;d") tmp=aux:$rpath:/lib/aux || : IFS=: set -- $tmp IFS=$old_IFS shift allow_ORIGIN=1 for j; do lower=$(echo $rpath_orig | grep -E -o "RPATH|RUNPATH" | awk '{print tolower($0)}') new_allow_ORIGIN=0 if test -z "$j"; then badness=16 elif expr match "$j" "$BADNESS_EXPR_32" >/dev/null; then badness=32 else case "$j" in (/lib/*|/usr/lib/*|/usr/X11R6/lib/*|/usr/local/lib/*) badness=0;; (/lib64/*|/usr/lib64/*|/usr/X11R6/lib64/*|/usr/local/lib64/*) badness=0;; (/usr/libexec/*) badness=0;; (\$ORIGIN|\$\{ORIGINX\}|\$ORIGIN/*|\$\{ORIGINX\}/*) test $allow_ORIGIN -eq 0 && badness=8 || { badness=0 new_allow_ORIGIN=1 } ;; (/*\$PLATFORM*|/*\$\{PLATFORM\}*|/*\$LIB*|/*\$\{LIB\}*) badness=0;; (/lib|/usr/lib|/usr/X11R6/lib) badness=1;; (/lib64|/usr/lib64|/usr/X11R6/lib64) badness=1;; (.*) badness=4;; (*) badness=2;; esac fi allow_ORIGIN=$new_allow_ORIGIN base=${i##$RPM_BUILD_ROOT} msg "$badness" 1 "file '$base' contains a standard $lower '$j' in [$rpath]" || fail=1 msg "$badness" 2 "file '$base' contains an invalid $lower '$j' in [$rpath]" || fail=1 msg "$badness" 4 "file '$base' contains an insecure $lower '$j' in [$rpath]" || fail=1 msg "$badness" 8 "file '$base' contains the \$ORIGIN $lower specifier at the wrong position in [$rpath]" || fail=1 msg "$badness" 16 "file '$base' contains an empty $lower in [$rpath]" || fail=1 msg "$badness" 32 "file '$base' contains a $lower referencing '..' of an absolute path [$rpath]" || fail=2 let ++pos done } : ${QA_RPATHS:=0} old_IFS=$IFS for i; do check_rpath $i done test -z "$fail"
.
40 Items
Change directory
Remove directory
Rename directory
..
72 Items
Change directory
Remove directory
Rename directory
brp-compress
1.77 KB
Edit
Delete
Copy
Move
Remame
brp-elfperms
0.42 KB
Edit
Delete
Copy
Move
Remame
brp-python-bytecompile
3.81 KB
Edit
Delete
Copy
Move
Remame
brp-python-hardlink
0.62 KB
Edit
Delete
Copy
Move
Remame
brp-remove-la-files
0.32 KB
Edit
Delete
Copy
Move
Remame
brp-strip
0.51 KB
Edit
Delete
Copy
Move
Remame
brp-strip-comment-note
0.79 KB
Edit
Delete
Copy
Move
Remame
brp-strip-static-archive
0.48 KB
Edit
Delete
Copy
Move
Remame
check-buildroot
1.29 KB
Edit
Delete
Copy
Move
Remame
check-files
1.03 KB
Edit
Delete
Copy
Move
Remame
check-prereqs
0.41 KB
Edit
Delete
Copy
Move
Remame
check-rpaths
1.06 KB
Edit
Delete
Copy
Move
Remame
check-rpaths-worker
5.19 KB
Edit
Delete
Copy
Move
Remame
elfdeps
22.23 KB
Edit
Delete
Copy
Move
Remame
fileattrs
13 Items
Change directory
Remove directory
Rename directory
find-lang.sh
8.84 KB
Edit
Delete
Copy
Move
Remame
find-provides
0.09 KB
Edit
Delete
Copy
Move
Remame
find-requires
0.09 KB
Edit
Delete
Copy
Move
Remame
fontconfig.prov
0.48 KB
Edit
Delete
Copy
Move
Remame
macros
41.63 KB
Edit
Delete
Copy
Move
Remame
macros.d
0 Items
Change directory
Remove directory
Rename directory
mkinstalldirs
3.46 KB
Edit
Delete
Copy
Move
Remame
ocamldeps.sh
6.8 KB
Edit
Delete
Copy
Move
Remame
perl.prov
6.28 KB
Edit
Delete
Copy
Move
Remame
perl.req
8.91 KB
Edit
Delete
Copy
Move
Remame
pkgconfigdeps.sh
1.34 KB
Edit
Delete
Copy
Move
Remame
platform
67 Items
Change directory
Remove directory
Rename directory
pythondistdeps.py
27.53 KB
Edit
Delete
Copy
Move
Remame
rpm.daily
0.3 KB
Edit
Delete
Copy
Move
Remame
rpm.supp
0.67 KB
Edit
Delete
Copy
Move
Remame
rpm2cpio.sh
1.56 KB
Edit
Delete
Copy
Move
Remame
rpm_macros_provides.sh
1.27 KB
Edit
Delete
Copy
Move
Remame
rpmdb_dump
0.04 KB
Edit
Delete
Copy
Move
Remame
rpmdb_load
0.04 KB
Edit
Delete
Copy
Move
Remame
rpmdeps
18.9 KB
Edit
Delete
Copy
Move
Remame
rpmpopt-4.18.0
10.54 KB
Edit
Delete
Copy
Move
Remame
rpmrc
17.45 KB
Edit
Delete
Copy
Move
Remame
rpmuncompress
14.9 KB
Edit
Delete
Copy
Move
Remame
script.req
0.31 KB
Edit
Delete
Copy
Move
Remame
tgpg
0.91 KB
Edit
Delete
Copy
Move
Remame