Hello community, here is the log from the commit of package rpmlint for openSUSE:Factory checked in at 2018-01-20 11:21:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rpmlint (Old) and /work/SRC/openSUSE:Factory/.rpmlint.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpmlint" Sat Jan 20 11:21:05 2018 rev:286 rq:565802 version:1.10 Changes: -------- --- /work/SRC/openSUSE:Factory/rpmlint/rpmlint.changes 2017-11-23 09:35:50.415284269 +0100 +++ /work/SRC/openSUSE:Factory/.rpmlint.new/rpmlint.changes 2018-01-20 11:21:12.435815876 +0100 @@ -1,0 +2,37 @@ +Mon Jan 15 09:15:19 UTC 2018 - [email protected] + +- whitelisting usbauth (bsc#1066877) + +------------------------------------------------------------------- +Sun Jan 14 15:36:40 UTC 2018 - [email protected] + +- Add Development/{Languages,Libraries}/Rust groups as noted in wiki + +------------------------------------------------------------------- +Wed Jan 3 10:27:22 UTC 2018 - [email protected] + +- add missing comma (,) to config file +- add user/group _nsd for NSD name server + +------------------------------------------------------------------- +Sat Dec 2 16:48:08 UTC 2017 - [email protected] + +- add 0001-Binariescheck-Check-for-chroot-chdir-on-ARM-PPC.patch + +------------------------------------------------------------------- +Wed Nov 29 09:26:18 UTC 2017 - [email protected] + +- whitelisting kcmsddm (bsc#1065563) + +------------------------------------------------------------------- +Fri Nov 24 10:09:26 UTC 2017 - [email protected] + +- Update to version master: + * Fix warnings + * Add new rpmlint check for new %{_fillupdir} macro (boo#1069468) + * Open paths within the rpm file itself + * Fix python warning + * BashismCheck: Only check regular files + * Rewrite BashismsCheck to actually work + +------------------------------------------------------------------- New: ---- 0001-Binariescheck-Check-for-chroot-chdir-on-ARM-PPC.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rpmlint-tests.spec ++++++ --- /var/tmp/diff_new_pack.mPbb4x/_old 2018-01-20 11:21:14.211732849 +0100 +++ /var/tmp/diff_new_pack.mPbb4x/_new 2018-01-20 11:21:14.215732662 +0100 @@ -1,7 +1,7 @@ # # spec file for package rpmlint-tests # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed ++++++ rpmlint.spec ++++++ --- /var/tmp/diff_new_pack.mPbb4x/_old 2018-01-20 11:21:14.235731728 +0100 +++ /var/tmp/diff_new_pack.mPbb4x/_new 2018-01-20 11:21:14.235731728 +0100 @@ -1,7 +1,7 @@ # # spec file for package rpmlint # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -89,6 +89,7 @@ Patch70: rpmlint-all-pie.patch Patch71: 0001-Avoid-calling-close-on-undefined-fd-variable.patch Patch72: rpmlint-slpp-NUM-NUM.patch +Patch73: 0001-Binariescheck-Check-for-chroot-chdir-on-ARM-PPC.patch BuildRequires: obs-service-format_spec_file BuildRequires: python3-flake8 BuildRequires: python3-pytest ++++++ 0001-Binariescheck-Check-for-chroot-chdir-on-ARM-PPC.patch ++++++ >From 5237c197f56698d55fd1d18f8127f6e947350d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]> Date: Wed, 11 Oct 2017 16:29:21 +0200 Subject: [PATCH] Binariescheck: Check for chroot/chdir on ARM, PPC The assembly on ARM looks almost the same as the x86 assembly, but with a branch mnemonic (bl) instead of an explicit call. On PPC, library function calls use jump tables, so the vicinity check does not work, but we can at least detect a sole chroot without chdir. --- BinariesCheck.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/BinariesCheck.py b/BinariesCheck.py index bd75558..8d224a8 100644 --- a/BinariesCheck.py +++ b/BinariesCheck.py @@ -54,8 +54,6 @@ class BinaryInfo(object): setuid_call_regex = create_regexp_call(r'set(?:res|e)?uid') setgroups_call_regex = create_regexp_call(r'(?:ini|se)tgroups') chroot_call_regex = create_regexp_call('chroot') - # 401eb8: e8 c3 f0 ff ff callq 400f80 <chdir@plt> - objdump_call_regex = re.compile(br'callq?\s(.*)') debuginfo_regex = re.compile(r'^\s+\[\s*\d+\]\s+\.debug_.*\s+') symtab_regex = re.compile(r'^\s+\[\s*\d+\]\s+\.symtab\s+') gethostbyname_call_regex = create_regexp_call(r'(gethostbyname|gethostbyname2|gethostbyaddr|gethostbyname_r|gethostbyname2_r|gethostbyaddr_r)') @@ -96,6 +94,16 @@ class BinaryInfo(object): self.mktemp = False is_debug = path.endswith('.debug') + # Currently this implementation works only on specific + # architectures due to reliance on arch specific assembly. + if pkg.arch in ['armv6hl', 'armv7hl', 'aarch64']: + # 10450: ebffffec bl 10408 <chroot@plt> + BinaryInfo.objdump_call_regex = re.compile(br'\sbl\s+(.*)') + elif (pkg.arch.endswith('86') or pkg.arch == 'x86_64'): + # 401eb8: e8 c3 f0 ff ff callq 400f80 <chdir@plt> + BinaryInfo.objdump_call_regex = re.compile(br'callq?\s(.*)') + else: + BinaryInfo.objdump_call_regex = None res = Pkg.getstatusoutput( ('readelf', '-W', '-S', '-l', '-d', '-s', path)) @@ -204,10 +212,13 @@ class BinaryInfo(object): # check if chroot is near chdir (since otherwise, chroot is called # without chdir) - # Currently this implementation works only on x86_64 due to reliance - # on x86_64 specific assembly. Skip it on other architectures - if ((pkg.arch.endswith('86') or pkg.arch == 'x86_64') and - self.chroot and self.chdir): + if not BinaryInfo.objdump_call_regex and self.chroot and self.chdir: + # On some architectures, e.g. PPC, it is to difficult to + # find the actual invocations of chroot/chdir, if both + # exist assume chroot is fine + self.chroot_near_chdir = True + + elif self.chroot and self.chdir: p = subprocess.Popen(('objdump', '-d', path), stdout=subprocess.PIPE, bufsize=-1, env=dict(os.environ, LC_ALL="C")) @@ -537,9 +548,8 @@ class BinariesCheck(AbstractCheck.AbstractCheck): printError(pkg, 'missing-call-to-setgroups-before-setuid', fname) - if ((pkg.arch.endswith('86') or pkg.arch == 'x86_64') and bin_info.chroot): - if not bin_info.chdir or not bin_info.chroot_near_chdir: - printError(pkg, 'missing-call-to-chdir-with-chroot', fname) + if bin_info.chroot and not bin_info.chroot_near_chdir: + printError(pkg, 'missing-call-to-chdir-with-chroot', fname) if bin_info.mktemp: printError(pkg, 'call-to-mktemp', fname) -- 2.14.2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.mPbb4x/_old 2018-01-20 11:21:14.355726118 +0100 +++ /var/tmp/diff_new_pack.mPbb4x/_new 2018-01-20 11:21:14.355726118 +0100 @@ -3,4 +3,4 @@ <param name="url">https://github.com/openSUSE/rpmlint-tests.git</param> <param name="changesrevision">8b163ac0aaf41e8424edbc4074a60f18e9cb9438</param></service><service name="tar_scm"> <param name="url">https://github.com/openSUSE/rpmlint-checks.git</param> - <param name="changesrevision">9fe029d320afd18bba51bad18cc79324a912c756</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">19a2516ec526f44b39a88e1757fc4f9fa1f3b603</param></service></servicedata> \ No newline at end of file ++++++ config ++++++ --- /var/tmp/diff_new_pack.mPbb4x/_old 2018-01-20 11:21:14.387724621 +0100 +++ /var/tmp/diff_new_pack.mPbb4x/_new 2018-01-20 11:21:14.387724621 +0100 @@ -108,6 +108,7 @@ 'Development/Languages/Perl', 'Development/Languages/Python', 'Development/Languages/Ruby', + 'Development/Languages/Rust', 'Development/Languages/Scheme', 'Development/Languages/Tcl', 'Development/Libraries/C and C++', @@ -120,6 +121,7 @@ 'Development/Libraries/Parallel', 'Development/Libraries/Perl', 'Development/Libraries/Python', + 'Development/Libraries/Rust', 'Development/Libraries/Tcl', 'Development/Libraries/X11', 'Development/Libraries/YaST', @@ -409,6 +411,7 @@ 'nogroup', 'novell_nogroup', 'novlxtier', + '_nsd', 'ntadmin', 'ntop', 'ntp', @@ -587,6 +590,7 @@ 'novlifdr', 'novlxregd', 'novlxsrvd', + '_nsd', 'ntop', 'ntp', 'openstack-ceilometer', @@ -675,7 +679,7 @@ '''A file in this package is owned by an unregistered group id. To register the group, please branch the devel:openSUSE:Factory:rpmlint rpmlint package, add the group to the "config" file and send a submitrequest. -''' +''', 'no-changelogname-tag', '''There is no changelog. Please insert a '%changelog' section heading in your spec file and prepare your changes file using e.g. the 'osc vc' command.''', @@ -1027,7 +1031,13 @@ "connman-nmcompat.conf", "connman.conf", "connman-vpn-dbus.conf", - "net.connman.vpn.service" + "net.connman.vpn.service", + # kcmsddm (bsc#1065563) + "org.kde.kcontrol.kcmsddm.conf", + "org.kde.kcontrol.kcmsddm.service", + # usbauth (bsc#1066877) + "org.opensuse.usbauth.conf", + "org.opensuse.usbauth.service" )) setOption("PAMModules.WhiteList", ( ++++++ rpmlint-checks-master.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-checks-master/BashismsCheck.py new/rpmlint-checks-master/BashismsCheck.py --- old/rpmlint-checks-master/BashismsCheck.py 2017-11-03 07:31:19.000000000 +0100 +++ new/rpmlint-checks-master/BashismsCheck.py 2017-11-25 11:09:53.000000000 +0100 @@ -1,54 +1,45 @@ ############################################################################# # File : BashismsCheck.py -# Package : rpmlint -# Author : Guido Berhoerster # Purpose : check /bin/sh shell scripts for bashisms ############################################################################# -import re +import stat + import AbstractCheck import Pkg -from Filter import printWarning, printInfo, printError, addDetails +from Filter import printWarning, printInfo, addDetails class BashismsCheck(AbstractCheck.AbstractFilesCheck): - RE_BIN_SH = re.compile(r'#!\s*(/usr)?/bin/sh(\s+|$)') - def __init__(self): AbstractCheck.AbstractFilesCheck.__init__(self, "BashismsCheck", ".*") def check_file(self, pkg, filename): - try: - f = open(filename) - except: + pkgfile = pkg.files()[filename] + + if not (stat.S_ISREG(pkgfile.mode) and + pkgfile.magic.startswith('POSIX shell script')): return + try: - first_line = f.read(256).split("\n")[0] - if self.RE_BIN_SH.match(first_line): - status, output = Pkg.getstatusoutput(["dash", "-n", filename]) - if status == 2: - printWarning(pkg, "bin-sh-syntax-error", filename) - try: - status, output = Pkg.getstatusoutput( - ["checkbashisms", filename]) - if status == 1: - printInfo(pkg, "potential-bashisms", filename) - except Exception as x: - printError( - pkg, 'rpmlint-exception', - '%(fname)s raised an exception: %(x)s' % - {'fname': filename, 'x': x}) - except UnicodeDecodeError: + status, output = Pkg.getstatusoutput(["dash", "-n", filename]) + if status == 2: + printWarning(pkg, "bin-sh-syntax-error", filename) + status, output = Pkg.getstatusoutput( + ["checkbashisms", filename]) + if status == 1: + printInfo(pkg, "potential-bashisms", filename) + except (FileNotFoundError, UnicodeDecodeError): pass - finally: - f.close() check = BashismsCheck() addDetails( 'bin-sh-syntax-error', -'A /bin/sh shell script contains a syntax error.', +'''A /bin/sh shell script contains a POSIX shell syntax error. +This might indicate a potential bash-specific feature being used, +try dash -n <file> for more detailed error message.''', 'potential-bashisms', '''checkbashisms reported potential bashisms in a /bin/sh shell diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-checks-master/CheckFilelist.py new/rpmlint-checks-master/CheckFilelist.py --- old/rpmlint-checks-master/CheckFilelist.py 2017-11-03 07:31:19.000000000 +0100 +++ new/rpmlint-checks-master/CheckFilelist.py 2017-11-25 11:09:53.000000000 +0100 @@ -104,7 +104,7 @@ }, { 'error': 'suse-filelist-forbidden-sysconfig', - 'details': '''Please use /var/adm/fillup-templates/sysconfig.<pkgname> + 'details': '''Please use %{_fillupdir}/sysconfig.<pkgname> and call %fillup_and_insserv for new sysconfig files. ''', 'good': [ @@ -123,7 +123,7 @@ '/etc/sysconfig/uml', ], 'bad': [ - '/var/adm/fillup-templates/rc.config.*', + '/var/adm/fillup-templates/*', '/etc/sysconfig/*', '/etc/rc.config.d/*', ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-checks-master/CheckPolkitPrivs.py new/rpmlint-checks-master/CheckPolkitPrivs.py --- old/rpmlint-checks-master/CheckPolkitPrivs.py 2017-11-03 07:31:19.000000000 +0100 +++ new/rpmlint-checks-master/CheckPolkitPrivs.py 2017-11-25 11:09:53.000000000 +0100 @@ -100,7 +100,7 @@ if i.nodeName in ('allow_any', 'allow_inactive', 'allow_active'): settings[i.nodeName] = i.firstChild.data - except: + except KeyError: iserr = 1 for i in ('allow_any', 'allow_inactive', 'allow_active'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-checks-master/LibraryPolicyCheck.py new/rpmlint-checks-master/LibraryPolicyCheck.py --- old/rpmlint-checks-master/LibraryPolicyCheck.py 2017-11-03 07:31:19.000000000 +0100 +++ new/rpmlint-checks-master/LibraryPolicyCheck.py 2017-11-25 11:09:53.000000000 +0100 @@ -300,7 +300,7 @@ def __init__(self): AbstractCheck.AbstractCheck.__init__(self, "LibraryPolicyCheck") self.map = [] - self.strongly_versioned_re = re.compile('-[\d\.]+\.so$') + self.strongly_versioned_re = re.compile(r'-[\d\.]+\.so$') def check(self, pkg): global _policy_legacy_exceptions
