Is my package fixed? Or: How to look into RPMs

How to look into RPMs

Peter Poeml

Sometimes on the SuSE list folks express doubts whether a package contains a certain fix or not. Even if the security announcements say the packages are not vulnerable, they want to know for sure. Looking at the version number of the package is most likely not enough to be sure... but how then? How to look "into" the packages?

I thought I'd write up a short howto and post it here.

Procedure 1. How to find out what HAS been changed:

  1. get the original source RPM as distributed on the CDs ("zq" or "src" directory)

  2. get the "fixed" package (see the security announcement, it contains the link to where to find it.)

  3. compare the changelogs of the packages:

    	rpm -qp --changelog /path/to/old.rpm > /tmp/old.changes 
    	rpm -qp --changelog /path/to/new.rpm > /tmp/new.changes 
    	diff -u /tmp/old.changes /tmp/new.changes | grep "^+"
  4. compare the file lists (just for an overview):

        	/usr/lib/rpm/rpmdiff /path/to/old.rpm /path/to/new.rpm

    This step would very likely show you that a patch file that has been added.

  5. to look further, unpack the source RPMs:

        	mkdir old; ( cd old; rpm2cpio /path/to/old.rpm | cpio -i --make-directories )
        	mkdir new; ( cd new; rpm2cpio /path/to/new.rpm | cpio -i --make-directories )
  6. compare the two directories:

        diff -uNr old new | less


        diff -uNr old new | view - -c "syntax on" 

    if you like it colorful. Or, pipe it into diffstat, or print it out via pdiff :-)

Procedure 2. How to find out what SHOULD have been changed:

  1. get the most recent sources (i.e. the fixed version) of, for example, openssl.

  2. get the second most recent sources (the vulnerable version).

  3. untar both of them.

  4. read and compare the ChangeLog or CHANGES files (or a similar file).

  5. run a recursive diff about the two source directories to review the changes.

Taking this even further, to really verify that the vulnerability is gone, you need a testcase (an exploit).

Anyway, your picture about the packages should be complete by then, and all your doubts hopefully gone.

For remaining questions you could contact this list ().

In case of serious concerns you should contact the SuSE Security Team directly, writing to .

Updated: Tue, 03 Feb 2004
Valid CSS!Valid HTML 4.01!