rpmlint/rpmlint.config

499 lines
14 KiB
Plaintext
Raw Normal View History

# -*- python -*-
# System wide rpmlint default configuration. Do not modify, override/add
# options in /etc/rpmlint/config and/or ~/.rpmlintrc as needed.
import os.path
import re
import sys
from Config import *
import Pkg
setOption("CompressExtension", "gz")
setOption("DefaultPythonVersion", sys.version[:3])
setOption("KernelModuleRPMsOK", False)
setOption("MaxLineLength", 80)
setOption("NetworkEnabled", True)
setOption("ReleaseExtension", r'\.(fc|rhe?l|el)\d+(?=\.|$)')
setOption("UseDebugSource", True)
setOption("UseDefaultRunlevels", False)
setOption("UseEpoch", False)
setOption("UseUTF8", True)
setOption("UseVersionInChangeLog", True)
setOption("ValidSrcPerms", (int("664",8), int("644",8), ))
setOption("ValidGroups", [])
setOption("ValidShells", (
"<lua>",
"/bin/sh",
"/bin/bash",
"/sbin/ldconfig",
"/usr/bin/perl",
"/usr/bin/python",
"/usr/bin/python2",
"/usr/bin/python3",
))
2007-07-31 20:54:22 +00:00
setOption("DanglingSymlinkExceptions", (
['consolehelper$', 'usermode'],
['consolehelper-gtk$', 'usermode-gtk'],
))
2007-07-31 20:54:22 +00:00
setOption("ValidLicenses", (
# These are the short names for all of the Fedora approved licenses.
# The master list is kept here: http://fedoraproject.org/wiki/Licensing
2018-08-11 09:51:52 +00:00
# Last synced with revision "2.47, July 3, 2018" of that page.
'AAL',
'Abstyles',
'Adobe',
'ADSL',
2007-08-05 13:35:20 +00:00
'AFL',
'Afmparse',
'AGPLv1',
'AGPLv3',
'AGPLv3+',
'AGPLv3 with exceptions',
'AMDPLPA',
'AML',
'AMPAS BSD',
2018-08-11 09:51:52 +00:00
'ANTLR-PD',
'APAFML',
2014-12-09 19:47:16 +00:00
'App-s2p',
'APSL 2.0',
'ARL',
2018-08-11 09:51:52 +00:00
'Array',
'Artistic 2.0',
'Artistic clarified',
2007-07-31 20:54:22 +00:00
'ASL 1.0',
'ASL 1.1',
'ASL 2.0',
'Bahyph',
'Barr',
2011-10-12 18:51:03 +00:00
'Beerware',
'BeOpen',
'Bibtex',
2007-08-05 13:35:20 +00:00
'BitTorrent',
2007-07-31 20:54:22 +00:00
'Boost',
2011-10-12 18:51:03 +00:00
'Borceux',
2007-07-31 20:54:22 +00:00
'BSD',
'BSD Protection',
2007-08-05 13:35:20 +00:00
'BSD with advertising',
2011-10-12 18:51:03 +00:00
'BSD with attribution',
'CATOSL',
'CC0',
2007-07-31 20:54:22 +00:00
'CeCILL',
2008-09-12 17:00:21 +00:00
'CeCILL-B',
'CeCILL-C',
2018-08-11 09:51:52 +00:00
'CDDL-1.0',
'CDDL-1.1',
2008-09-12 17:00:21 +00:00
'CNRI',
2007-07-31 20:54:22 +00:00
'Condor',
'Copyright only',
'CPAL',
'CPL',
2018-08-11 09:51:52 +00:00
'CPM',
2015-09-25 17:51:08 +00:00
'CRC32',
'Crossword',
2007-08-05 13:35:20 +00:00
'Crystal Stacker',
'Cube',
'diffmark',
'DMIT',
'DOC',
'Dotseqn',
2011-10-12 18:51:03 +00:00
'DSDP',
'dvipdfm',
'DWPL',
'ECL 1.0',
'ECL 2.0',
2007-07-31 20:54:22 +00:00
'eCos',
'EFL 2.0',
2011-10-12 18:51:03 +00:00
'eGenix',
'Entessa',
'EPICS',
2018-08-11 09:51:52 +00:00
'EPL-1.0',
'EPL-2.0',
'ERPL',
2007-07-31 20:54:22 +00:00
'EU Datagrid',
'EUPL 1.1',
'Eurosym',
'Fair',
2018-08-11 09:51:52 +00:00
'FDK-AAC',
'FSFAP',
'FSFUL',
'FSFULLR',
'FTL',
2007-08-05 13:35:20 +00:00
'Giftware',
'GL2PS',
2007-08-05 13:35:20 +00:00
'Glide',
2011-10-12 18:51:03 +00:00
'Glulxe',
'gnuplot',
2007-07-31 20:54:22 +00:00
'GPL+',
2007-08-05 13:35:20 +00:00
'GPL+ or Artistic',
'GPL+ with exceptions',
'GPLv1',
2008-09-12 17:00:21 +00:00
'GPLv2 or Artistic',
'GPLv2+ or Artistic',
2007-07-31 20:54:22 +00:00
'GPLv2',
2007-08-05 13:35:20 +00:00
'GPLv2 with exceptions',
2007-07-31 20:54:22 +00:00
'GPLv2+',
'GPLv2+ with exceptions',
2007-07-31 20:54:22 +00:00
'GPLv3',
'GPLv3 with exceptions',
2007-07-31 20:54:22 +00:00
'GPLv3+',
'GPLv3+ with exceptions',
'HaskellReport',
'HSRL',
2007-07-31 20:54:22 +00:00
'IBM',
2007-08-05 13:35:20 +00:00
'IJG',
'ImageMagick',
2007-07-31 20:54:22 +00:00
'iMatix',
'Imlib2',
2018-08-11 09:51:52 +00:00
'Inner-Net',
2007-07-31 20:54:22 +00:00
'Intel ACPI',
'Interbase',
2007-08-05 13:35:20 +00:00
'ISC',
2007-07-31 20:54:22 +00:00
'Jabber',
'JasPer',
'JPython',
'Julius',
'Knuth',
'Latex2e',
'LBNL BSD',
'Leptonica',
2007-07-31 20:54:22 +00:00
'LGPLv2',
'LGPLv2 with exceptions',
'LGPLv2+',
2008-09-12 17:00:21 +00:00
'LGPLv2+ or Artistic',
'LGPLv2+ with exceptions',
2007-07-31 20:54:22 +00:00
'LGPLv3',
'LGPLv3 with exceptions',
2007-07-31 20:54:22 +00:00
'LGPLv3+',
'LGPLv3+ with exceptions',
'Lhcyr',
2007-08-05 13:35:20 +00:00
'libtiff',
'LLGPL',
'Logica',
'LOSLA',
2007-07-31 20:54:22 +00:00
'LPL',
'LPPL',
'MakeIndex',
2007-07-31 20:54:22 +00:00
'mecab-ipadic',
'midnight',
'MirOS',
2007-07-31 20:54:22 +00:00
'MIT',
'MITNFA',
'MIT with advertising',
'mod_macro',
'Motosoto',
2007-07-31 20:54:22 +00:00
'MPLv1.0',
'MPLv1.1',
'MPLv2.0',
'MS-PL',
'MS-RL',
'MTLL',
'Mup',
'Naumen',
2007-07-31 20:54:22 +00:00
'NCSA',
'NetCDF',
2007-07-31 20:54:22 +00:00
'Netscape',
'Newmat',
'Newsletr',
'NGPL',
2018-08-11 09:51:52 +00:00
'NISTSL',
'NLPL',
'Nmap',
2007-07-31 20:54:22 +00:00
'Nokia',
'NOSL',
'Noweb',
'OGL',
'OML',
2007-07-31 20:54:22 +00:00
'OpenLDAP',
'OpenPBS',
'OpenSSL',
'OReilly',
2007-07-31 20:54:22 +00:00
'OSL 1.0',
'OSL 1.1',
2007-08-05 13:35:20 +00:00
'OSL 2.0',
'OSL 2.1',
2007-08-05 13:35:20 +00:00
'OSL 3.0',
'Par',
2007-07-31 20:54:22 +00:00
'Phorum',
'PHP',
'PlainTeX',
'Plexus',
'PostgreSQL',
'psfrag',
2008-09-12 17:00:21 +00:00
'psutils',
2007-07-31 20:54:22 +00:00
'Public Domain',
'Python',
'Qhull',
2007-07-31 20:54:22 +00:00
'QPL',
2018-08-11 09:51:52 +00:00
'radvd',
'Rdisc',
'REX',
'RiceBSD',
'Romio',
2007-07-31 20:54:22 +00:00
'RPSL',
2018-08-11 09:51:52 +00:00
'RSA',
'Rsfs',
2007-07-31 20:54:22 +00:00
'Ruby',
'Saxpath',
2018-08-11 09:51:52 +00:00
'Sequence',
'SCEA',
'SCRIP',
'Sendmail',
2007-07-31 20:54:22 +00:00
'Sleepycat',
'SISSL',
'SLIB',
'SNIA',
2013-05-17 17:41:17 +00:00
'softSurfer',
2007-07-31 20:54:22 +00:00
'SPL',
'STMPL',
'SWL',
'TCGL',
'TCL',
2008-09-12 17:00:21 +00:00
'Teeworlds',
2014-12-09 19:47:16 +00:00
'TGPPL',
'TGPPL with exceptions',
'Threeparttable',
2008-09-12 17:00:21 +00:00
'TMate',
'Tolua',
2011-10-12 18:51:03 +00:00
'TORQUEv1.1',
'TOSL',
'TPDL',
'TPL',
'TTWL',
2018-08-11 09:51:52 +00:00
'Tumbolia',
'UCAR',
'UCD',
2014-12-09 19:47:16 +00:00
'Unicode',
'Unlicense',
2007-07-31 20:54:22 +00:00
'Vim',
'VNLSL',
'VOSTROM',
2007-07-31 20:54:22 +00:00
'VSL',
'W3C',
'Webmin',
'Wsuipa',
'WTFPL',
'wxWidgets',
2018-08-11 09:51:52 +00:00
'wxWindows',
'Xerox',
2007-07-31 20:54:22 +00:00
'xinetd',
'xpp',
'XSkat',
'YPLv1.1',
'Zed',
2007-07-31 20:54:22 +00:00
'Zend',
'zlib',
'zlib with acknowledgement',
2007-07-31 20:54:22 +00:00
'ZPLv1.0',
'ZPLv2.0',
'ZPLv2.1',
2007-07-31 20:54:22 +00:00
# Documentation licenses
'CDL',
'FBSDDL',
'GFDL',
'IEEE',
'LDPL',
'OFSFDL',
2007-07-31 20:54:22 +00:00
'Open Publication',
'Public Use',
'Verbatim',
2007-07-31 20:54:22 +00:00
# Content licenses
'CC-BY',
'CC-BY-ND',
'CC-BY-SA',
'DMTF',
2007-07-31 20:54:22 +00:00
'DSL',
'EFML',
2007-07-31 20:54:22 +00:00
'Free Art',
2008-09-12 17:00:21 +00:00
'GeoGratis',
'Green OpenMusic',
'OAL',
2018-08-11 09:51:52 +00:00
'PDDL-1.0',
# Font licenses
'AMS',
2007-07-31 20:54:22 +00:00
'Arphic',
'Baekmuk',
'Bitstream Vera',
2018-08-11 09:51:52 +00:00
'Charter',
'DoubleStroke',
2018-08-11 09:51:52 +00:00
'ec',
'Elvish',
2008-09-12 17:00:21 +00:00
'Hershey',
2018-08-11 09:51:52 +00:00
'HOFL',
'IPA',
'Liberation',
'Lucida',
'MgOpen',
'mplus',
'OFL',
'PTFL',
2018-08-11 09:51:52 +00:00
'Punknova',
'STIX',
'Utopia',
'Wadalab',
'XANO',
2007-07-31 20:54:22 +00:00
# Others
'Redistributable, no modification permitted',
'Freely redistributable without restriction',
))
setOption('SystemLibPaths', ('/lib', '/lib64', '/usr/lib', '/usr/lib64'))
2014-06-25 16:39:23 +00:00
# Add systemd dir to ignored path for UsrLibBinaryException
setOption('UsrLibBinaryException', r'^/usr/lib(64)?/(perl|python|ruby|menu|pkgconfig|ocaml|systemd|lib[^/]+\.(so|l?a)$|\.build-id)')
2014-06-25 16:39:23 +00:00
# Get standard users and groups from the setup package's uidgid file
setOption('StandardUsers', [])
setOption('StandardGroups', [])
setup_pkg = None
try:
setup_pkg = Pkg.InstalledPkg('setup')
except:
pass
if setup_pkg:
users = set()
groups = set()
uidgid_regex = re.compile(r'^\s*(\S+)\s+(-|\d+)\s+(-|\d+|\(\d+\))\s')
for uidgid_file in [x for x in setup_pkg.files() if x.endswith('/uidgid')]:
if os.path.exists(uidgid_file):
fobj = open(uidgid_file)
try:
for line in fobj.read().strip().splitlines():
res = uidgid_regex.search(line)
if res:
name = res.group(1)
if res.group(2) != '-':
users.add(name)
if res.group(3) != '-' and not '(' in res.group(3):
groups.add(name)
del res
del line
finally:
fobj.close()
del fobj
setOption('StandardUsers', sorted(users))
setOption('StandardGroups', sorted(groups))
del uidgid_regex, uidgid_file, users, groups
del setup_pkg
# Output filters
addFilter("source-or-patch-not-compressed")
addFilter("%mklibname")
addFilter("no-dependency-on (perl|python)-base")
addFilter("no-dependency-on locales-")
addFilter("(python|perl5)-naming-policy-not-applied")
addFilter("no-(packager-tag|signature)")
addFilter("incoherent-version-in-name")
addFilter("invalid-build-requires")
addFilter("ghost-files-without-postin")
addFilter("postin-without-ghost-file-creation")
addFilter("no-major-in-name")
addFilter("no-provides")
addFilter("executable-in-library-package")
addFilter("non-versioned-file-in-library-package")
addFilter("requires-on-release")
addFilter("jar-not-indexed")
addFilter("outside-libdir-files")
addFilter("-debug(info|source).* no-documentation")
addFilter("-debuginfo.* /usr/lib/debug/")
addFilter("-debugsource.* /usr/src/debug/")
addFilter("non-standard-dir-in-usr libexec")
addFilter("^gpg-pubkey:")
addFilter(" doc-file-dependency .* /bin/sh$")
2007-07-31 20:54:22 +00:00
addFilter("hardcoded-library-path .*/lib/udev(/|$)")
addFilter("not-standard-release-extension")
2019-07-11 13:45:19 +00:00
addFilter("explicit-lib-dependency (liberation-fonts|libertas-.*-firmware|libvirt$|.*-(java|python|utils)$)")
addFilter("explicit-lib-dependency (python-.*lib.*|python2-.*lib.*|python3-.*lib.*)$")
addFilter("explicit-lib-dependency libreoffice.*$")
addFilter("filename-too-long-for-joliet")
addFilter("symlink-should-be-")
addFilter(r"dangling-\S*symlink /usr/share/doc/HTML/\S+/common .+/common$")
addFilter(r"hidden-file-or-dir .*/man5/\.k5login\.5[^/]+$")
addFilter(r"blender.+ (wrong-script-interpreter|non-executable-script) .+/blender/.+\.py.*BPY.*")
# Fedora 12 and newer no longer need a buildroot defined, to have the buildroot cleaned at the beginning
# of %install, and do not need to define a %clean section unless the default is invalid.
addFilter("no-cleaning-of-buildroot")
addFilter("no-buildroot-tag")
addFilter("no-%clean-section")
# Only EL4 needs the files-attr-not-set check, because rpm 4.4 and newer no longer need a %defattr line
# (it automatically provides one).
addFilter("files-attr-not-set")
# Don't bother with the non-ghost-in-run checks, /var/lock and /var/run are
# symlinks to /run/lock and /run respectively, and /run is a tmpfs
addFilter("non-ghost-in-run")
# Someone thought it was a good idea to make .desktop files executable. They were wrong.
# Nevertheless, I do not yet control the universe, so we squelch the error here.
addFilter(r"script-without-shebang .*\.desktop$")
# Some files in /etc/ are not meant to be modified by the sysadmin
addFilter("non-conffile-in-etc /etc/rpm/.*$")
addFilter("non-conffile-in-etc /etc/rc.d/init.d/.*$")
# Fixed in rpm >= 4.7.1
addFilter("broken-syntax-in-scriptlet-requires")
# Files that are intentionally not supposed to be readable
# Contains passwords
addFilter("non-readable /etc/ovirt-engine/isouploader.conf")
# Ignore webservers which are just broken.
addFilter(r"invalid-url .*\.googlecode\.com/.*HTTP Error 404")
addFilter(r"invalid-url .*\.jboss\.org/.*HTTP Error 403")
addFilter(r"invalid-url .*bitbucket\.org/.*HTTP Error 403")
addFilter(r"invalid-url .*github\.com/.*HTTP Error 403")
# Don't care about long descriptions on debuginfo packages
# They automatically include the package name and are always
# quite long.
addFilter("-debuginfo.* description-line-too-long")
# ignore "common" jargon words
# https://bugzilla.redhat.com/show_bug.cgi?id=1424684#c9
2019-07-11 13:45:19 +00:00
addFilter(r"spelling-error.* \b(runtime|Runtime|metadata|cryptographic|multi|linux|filesystem|filesystems|backend|backends|userspace|addon|wayland|Wayland|util|utils|lossless|virtualization|toolkits|libvirtd|crypto|glyphs|GStreamer|http|extensibility|codec|codecs|truetype|scalable|pluggable|pixbuf|Kerberos|customizable|bitstream|tcp|libXss|libs|libc|encodings|GLib|udev|posix|libpng|glapi|gbm|freedesktop|spi|realtime|preprocessor|libaudit|hypervisor|embeddable|distributable|devel|config|cairo|bootloader|adaptors|pragma|passphrase|malloc|libvirt|libmagic|io|datetime|boolean|argparse|py|pinentry|namespace|middleware|lowlevel|libxcb|libudev|libsoup|libgcrypt|libcom|iSCSI|initramfs|GObject|executables|dialogs|checkpolicy|bitmapped|assistive|btrfs|crypttab|defrag|dracut|hostname|luks|mountpoints|netdev|rpmnew|rpmsave|storaged|tss|unlocker)\b")
# Fedora no longer uses explicit ldconfig %post/%postun as of Fedora 28
addFilter("library-without-ldconfig-postin")
addFilter("library-without-ldconfig-postun")
# Ignore 700 dir perms here
addFilter("non-standard-dir-perm /etc/.* 700")
addFilter("non-standard-dir-perm /var/lib/.* 700")
# Fedora no longer requires install-info scriptlets
addFilter("info-files-without-install-info-postin")
addFilter("info-files-without-install-info-postun")
addFilter("postin-without-install-info")
# pip 20.2 generates PEP 376 "REQUESTED" marker (empty)
addFilter(r"zero-length .+/site-packages/.+\.dist-info/REQUESTED\b")
# py.typed files are empty
addFilter(r"zero-length .+/site-packages/.+/py\.typed\b")
# specfile-errors are listed twice, once with reason and once without
# we filter out the empty ones
addFilter(r"\.(src|spec): (E|W): specfile-error\s+$")
2015-09-25 17:51:08 +00:00
bad_crypto_warning = \
'''This application package calls a function to explicitly set crypto ciphers
for SSL/TLS. That may cause the application not to use the system-wide set
cryptographic policy and should be modified in accordance to:
https://fedoraproject.org/wiki/Packaging:CryptoPolicies'''
call_blacklist = {'crypto-policy-non-compliance-openssl' :
{'f_name' : 'SSL_CTX_set_cipher_list',
'good_param' : 'PROFILE=SYSTEM',
2015-09-25 17:51:08 +00:00
'description' : bad_crypto_warning},
'crypto-policy-non-compliance-gnutls-1' :
{'f_name' : 'gnutls_priority_set_direct',
'description' : bad_crypto_warning},
'crypto-policy-non-compliance-gnutls-2' :
{'f_name' : 'gnutls_priority_init',
'good_param' : 'SYSTEM',
2015-09-25 17:51:08 +00:00
'description' : bad_crypto_warning}
}
setOption("WarnOnFunction", call_blacklist)
# https://bugzilla.redhat.com/496737, https://bugzilla.redhat.com/646455
for pkg, exe in (("coreutils", "/bin/su"),
("krb5-workstation", "/usr/kerberos/bin/ksu"),
("passwd", "/usr/bin/passwd"),
("sudo", "/usr/bin/sudo(edit)?"),
("upstart", "/sbin/initctl"),
("usermode", "/usr/sbin/userhelper")):
addFilter("%s.* (setuid-binary|non-standard-executable-perm) %s (root )?04"
% (pkg, exe))