Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rpmlint for openSUSE:Factory checked in at 2024-11-14 16:07:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rpmlint (Old) and /work/SRC/openSUSE:Factory/.rpmlint.new.2017 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpmlint" Thu Nov 14 16:07:54 2024 rev:489 rq:1223376 version:2.6.1+git20241111.4884f6a Changes: -------- --- /work/SRC/openSUSE:Factory/rpmlint/rpmlint.changes 2024-10-25 19:20:14.580129359 +0200 +++ /work/SRC/openSUSE:Factory/.rpmlint.new.2017/rpmlint.changes 2024-11-14 16:08:14.101635118 +0100 @@ -1,0 +2,15 @@ +Mon Nov 11 13:15:05 UTC 2024 - dims...@opensuse.org + +- Update to version 2.6.1+git20241111.4884f6a: + * SUIDPermissionsCheck: Escape path for regular expression + * false positive: systemd-service-without-service_del_postun + +------------------------------------------------------------------- +Thu Nov 07 15:28:46 UTC 2024 - filippo.bona...@suse.com + +- Update to version 2.6.1+git20241107.1b69a23: + * dbus-services: whitelist sddm-kalpa (bsc#1232647) + * dbus-services: replace generic comment for sddm + * SUIDPermissionsCheck: chkstat to permctl rename + +------------------------------------------------------------------- Old: ---- rpmlint-2.6.1+git20241024.1f09e50.tar.xz New: ---- rpmlint-2.6.1+git20241111.4884f6a.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rpmlint.spec ++++++ --- /var/tmp/diff_new_pack.bVSmop/_old 2024-11-14 16:08:14.709660616 +0100 +++ /var/tmp/diff_new_pack.bVSmop/_new 2024-11-14 16:08:14.713660784 +0100 @@ -23,7 +23,7 @@ %define name_suffix -%{flavor} %endif Name: rpmlint%{name_suffix} -Version: 2.6.1+git20241024.1f09e50 +Version: 2.6.1+git20241111.4884f6a Release: 0 Summary: RPM file correctness checker License: GPL-2.0-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.bVSmop/_old 2024-11-14 16:08:14.769663132 +0100 +++ /var/tmp/diff_new_pack.bVSmop/_new 2024-11-14 16:08:14.773663300 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/rpm-software-management/rpmlint.git</param> - <param name="changesrevision">1f09e5065c4f538e2e7fabd2d2deeaff2254dc6a</param></service></servicedata> + <param name="changesrevision">4884f6a3885c4c8f409108df7400773702627e80</param></service></servicedata> (No newline at EOF) ++++++ rpmlint-2.6.1+git20241024.1f09e50.tar.xz -> rpmlint-2.6.1+git20241111.4884f6a.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/dbus-services.toml new/rpmlint-2.6.1+git20241111.4884f6a/configs/openSUSE/dbus-services.toml --- old/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/dbus-services.toml 2024-10-24 10:50:59.000000000 +0200 +++ new/rpmlint-2.6.1+git20241111.4884f6a/configs/openSUSE/dbus-services.toml 2024-11-11 11:41:38.000000000 +0100 @@ -433,13 +433,23 @@ [[FileDigestGroup]] package = "sddm" type = "dbus" -note = "imported from rpmlint1 DBUSServices.WhiteList" +note = "D-Bus control interface for the display manager, mostly no-ops" bugs = ["boo#897788", "bsc#1206348"] [[FileDigestGroup.digests]] path = "/usr/share/dbus-1/system.d/sddm_org.freedesktop.DisplayManager.conf" digester = "xml" hash = "4b4cbecadaf6124b64d65abcc27157a154f4f3544b1a68b1f0754282e6766c8f" +[[FileDigestGroup]] +package = "sddm-kalpa" +type = "dbus" +note = "see sddm above: same code-base, just a different packaging" +bugs = ["bsc#1232647"] +[[FileDigestGroup.digests]] +path = "/usr/share/dbus-1/system.d/sddm_org.freedesktop.DisplayManager-sddm.conf" +digester = "xml" +hash = "4b4cbecadaf6124b64d65abcc27157a154f4f3544b1a68b1f0754282e6766c8f" + [[FileDigestGroup]] package = "sddm-qt6" type = "dbus" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241024.1f09e50/rpmlint/checks/SUIDPermissionsCheck.py new/rpmlint-2.6.1+git20241111.4884f6a/rpmlint/checks/SUIDPermissionsCheck.py --- old/rpmlint-2.6.1+git20241024.1f09e50/rpmlint/checks/SUIDPermissionsCheck.py 2024-10-24 10:50:59.000000000 +0200 +++ new/rpmlint-2.6.1+git20241111.4884f6a/rpmlint/checks/SUIDPermissionsCheck.py 2024-11-11 11:41:38.000000000 +0100 @@ -1,4 +1,5 @@ import os +import re import stat import rpm @@ -59,7 +60,8 @@ if script: for line in script.split('\n'): - if 'chkstat -n' in line and path in line: + escaped = re.escape(path) + if re.search(fr'(chkstat|permctl) -n .* {escaped}', line): found = True break diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241024.1f09e50/rpmlint/checks/SystemdInstallCheck.py new/rpmlint-2.6.1+git20241111.4884f6a/rpmlint/checks/SystemdInstallCheck.py --- old/rpmlint-2.6.1+git20241024.1f09e50/rpmlint/checks/SystemdInstallCheck.py 2024-10-24 10:50:59.000000000 +0200 +++ new/rpmlint-2.6.1+git20241111.4884f6a/rpmlint/checks/SystemdInstallCheck.py 2024-11-11 11:41:38.000000000 +0100 @@ -49,7 +49,8 @@ break # accept %service_del_postun_without_restart() macro - if not processed['postun'] and ':' == postun.strip(): + postun_without_restart = ':' in (i.strip() for i in postun.split('\n')) + if not processed['postun'] and postun_without_restart: processed['postun'] = True basename = Path(fname).name diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241024.1f09e50/test/test_suid_permissions.py new/rpmlint-2.6.1+git20241111.4884f6a/test/test_suid_permissions.py --- old/rpmlint-2.6.1+git20241024.1f09e50/test/test_suid_permissions.py 2024-10-24 10:50:59.000000000 +0200 +++ new/rpmlint-2.6.1+git20241111.4884f6a/test/test_suid_permissions.py 2024-11-11 11:41:38.000000000 +0100 @@ -1,10 +1,12 @@ import os +import stat import pytest from rpmlint.checks.SUIDPermissionsCheck import SUIDPermissionsCheck from rpmlint.filter import Filter import Testing +from Testing import get_tested_mock_package from Testing import get_tested_package, get_tested_path @@ -132,3 +134,44 @@ test.check(get_tested_package(package, tmp_path)) out = output.print_results(output.results) assert 'sendmail.x86_64: E: permissions-file-setuid-bit /usr/sbin/sendmail is packaged with setuid/setgid bits (02555)' not in out + + +# https://github.com/rpm-software-management/rpmlint/issues/1292 +PERMCTL_PKG = get_tested_mock_package( + lazyload=True, + name='permctl', + files={ + '/var/lib/perms/test': { + 'is_dir': True, + 'metadata': { + 'mode': 0o640 | stat.S_IFDIR | stat.S_ISUID, + 'user': 'root', + 'group': 'root', + }, + }, + }, + header={ + 'POSTIN': """ + if [ -x /usr/bin/permctl ]; then \ + /usr/bin/permctl -n --set --system /var/lib/perms/test || : \ + fi \ +""", + }, +) +CHKSTAT_PKG = PERMCTL_PKG.clone( + header={ + 'POSTIN': """ + if [ -x /usr/bin/chkstat ]; then \ + /usr/bin/chkstat -n --set --system /var/lib/perms/test || : \ + fi \ +""", + }, +) + + +@pytest.mark.parametrize('package', [PERMCTL_PKG, CHKSTAT_PKG]) +def test_permissions_permctl(package, permissions_check): + output, test = permissions_check + test.check(package) + out = output.print_results(output.results) + assert 'permissions-missing-postin' not in out diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241024.1f09e50/test/test_systemd_install.py new/rpmlint-2.6.1+git20241111.4884f6a/test/test_systemd_install.py --- old/rpmlint-2.6.1+git20241024.1f09e50/test/test_systemd_install.py 2024-10-24 10:50:59.000000000 +0200 +++ new/rpmlint-2.6.1+git20241111.4884f6a/test/test_systemd_install.py 2024-11-11 11:41:38.000000000 +0100 @@ -50,6 +50,35 @@ files=['/usr/lib/systemd/system/greetd.service'], header={}, ), True), + (get_tested_mock_package( + name='MirrorCache', + files=[ + '/usr/lib/systemd/system/mirrorcache-backstage-hashes.service', + '/usr/lib/systemd/system/mirrorcache-backstage.service', + '/usr/lib/systemd/system/mirrorcache-hypnotoad.service', + '/usr/lib/systemd/system/mirrorcache-subtree.service', + '/usr/lib/systemd/system/mirrorcache.service', + ], + header={ + 'PREUN': '/usr/lib/systemd/systemd-update-helper remove-system-units mirrorcache.service mirrorcache-backstage.service mirrorcache-backstage-hashes.service mirrorcache-subtree.service mirrorcache-hypnotoad.service', + 'PREIN': '/usr/lib/systemd/systemd-update-helper mark-install-system-units mirrorcache.service mirrorcache-backstage.service mirrorcache-backstage-hashes.service mirrorcache-subtree.service mirrorcache-hypnotoad.service', + 'POSTIN': '/usr/lib/systemd/systemd-update-helper install-system-units mirrorcache.service mirrorcache-backstage.service mirrorcache-backstage-hashes.service mirrorcache-subtree.service mirrorcache-hypnotoad.service', + 'POSTUN': """ +if [ $1 -ge 1 ] && [ -x /usr/lib/systemd/systemd-update-helper ]; then + # Package upgrade, not uninstall + DISABLE_RESTART_ON_UPDATE=no + [ -e /etc/sysconfig/services ] && . /etc/sysconfig/services || : + case "$DISABLE_RESTART_ON_UPDATE" in + yes|1) ;; + *) /usr/lib/systemd/systemd-update-helper mark-restart-system-units mirrorcache.service mirrorcache-backstage.service mirrorcache-backstage-hashes.service mirrorcache-subtree.service || : + esac +fi + +: + +""", + }, + ), False), ]) def test_systemd_service_without_service_macro2(package, error, systemdinstallcheck): output, test = systemdinstallcheck