Description of problem: rpmlint reports missing-call-to-chdir-with-chroot on libraries, where there is not really such problem. I found it on bind99-libs that I manage, but it is reported on other libraries. And it is not warning, but error. Version-Release number of selected component (if applicable): 1.9-3.fc24 How reproducible: Always Steps to Reproduce: 1. use X86_64 machine 2. dnf install bind99-libs 3. rpmlint -c BinariesCheck bind99-libs Actual results: bind99-libs.x86_64: E: missing-call-to-chdir-with-chroot /usr/lib64/bind99/libisc-export.so.106.1.1 1 packages and 0 specfiles checked; 1 errors, 0 warnings. Expected results: $ LANG=C rpmlint -c BinariesCheck bind99-libs 1 packages and 0 specfiles checked; 0 errors, 0 warnings. Additional info: I found rpmlint uses 3 conditions. Binary uses/links: * chroot * chdir * chdir is close to chroot And the last one is actually not able to validate. Even then it reports error. It looks for chroot@plt and chdir@plt. But if none of them is found, it reports error too. If application links chdir and chroot calls, it is enough to report error.
Created attachment 1221904 [details] suggested fix
@plt tables are not even possible on x86_64. And are not available for every code with PIC flag used. Unfortunately, disassembly with PIC does not contain function names that could be used instead.
Logic seems correct to me, but I want to make sure upstream is fine with it. Ville?
This area of code has received quite significant changes lately upstream. I suggest checking with current git master whether the issue persists, and if yes, rebasing the suggested fix against master and submitting a github PR for it. I also admit that this stuff is outside my area of competence, so be prepared to point out explanations/docs, provide packages for testing, and have patience.
Yes, upstream is different, but fails the same way also. I wonder why upstream tests it only for x86_64, when recent Fedora does have only a few binaries containing at least single call matching this spec. Reported as https://github.com/rpm-software-management/rpmlint/issues/84
(In reply to Petr Menšík from comment #5) > I wonder why upstream tests it only for x86_64 https://github.com/rpm-software-management/rpmlint/pull/80
Well I think https://github.com/rpm-software-management/rpmlint/pull/80 should be reverted. It is looking for call OR callq calls, because there is callq?. It supported checking for both before, as in current Fedora 24. This makes regression only because someone was confused by comment in code.
This issue is happening with rsyslog as well, in 8.24.0-6 I patched in the chdir call but rpmlint error remains.
This bug appears to have been reported against 'rawhide' during the Fedora 26 development cycle. Changing version to '26'.
This message is a reminder that Fedora 26 is nearing its end of life. Approximately 4 (four) weeks from now Fedora will stop maintaining and issuing updates for Fedora 26. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a Fedora 'version' of '26'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora 26 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora, you are encouraged change the 'version' to a later Fedora version prior this bug is closed as described in the policy above. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete.
This seems to be resolved in rawhide (for both bind99-libs and rsyslog), closing.