[Bug 204448] RPM verify not functional: "file's dependencies has changed since prelinking"

bugzilla at redhat.com bugzilla at redhat.com
Thu Nov 5 10:25:07 UTC 2009


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.


https://bugzilla.redhat.com/show_bug.cgi?id=204448


Nils Philippsen <nphilipp at redhat.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|CLOSED                      |ASSIGNED
            Version|5                           |rawhide
           Keywords|                            |Reopened
                 CC|                            |ffesti at redhat.com,
                   |                            |nphilipp at redhat.com
         AssignedTo|pjones at redhat.com           |jakub at redhat.com
         Resolution|WONTFIX                     |
          QAContact|                            |extras-qa at fedoraproject.org




--- Comment #7 from Nils Philippsen <nphilipp at redhat.com>  2009-11-05 05:25:04 EDT ---
I've stumbled over this on current (i.e. pre F-12) Rawhide:

[root at gibraltar ~]# rpm -Vf /lib64/libvolume_id.so.1.1.0
prelink: /lib64/libvolume_id.so.1.1.0: at least one of file's dependencies has
changed since prelinking
S.?......    /lib64/libvolume_id.so.1.1.0

Florian Festi found that prelink provides this RPM macro which should give the
un-prelinked binary contents on stdout:

/etc/rpm/macros.prelink:

# rpm-4.1 verifies prelinked libraries using a prelink undo helper.
#       Note: The 2nd token is used as argv[0] and "library" is a
#       placeholder that will be deleted and replaced with the appropriate
#       library file path.
%__prelink_undo_cmd     /usr/sbin/prelink prelink -y library

Unfortunately, this doesn't work if un-prelinking and prelinking again doesn't
produce a file identical to the original one. I assume this doesn't work if
dependencies change or whatever.

Instead of "prelink -y ...", "prelink -u ..." could be used if it were able to
spit out the contents to stdout:

- "prelink -u -o - ..." produces a file named "-" containing the original
binary
- "prelink -u -o /dev/stdout ..." replaces /dev/stdout with the binary contents
- "prelink -u -o /proc/self/fd/1 ..." doesn't work at all (besides not being
very portable)

Alternatively to making the above work, one could add a "--stdout" option to be
used with "-u" (or a "--always" for use with "-y"). Regardless of the solution,
/etc/rpm/macros.prelink needs to be adapted as well.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.




More information about the fedora-triage-list mailing list