Description of Problem:
librpm aborts making impossible to build reliable applications with it
How Reproducible:
use rpm2html to index some broken RPM like egcs-c++-1.1b-2.sparc.rpm
from the libc6 Sparc contrib
I assume rpm(1) will do the same
Steps to Reproduce:
1. get the broken RPM
2. run rpm under gdb
3. put a breakpoint in exit and run it on the RPM
Actual Results: this with rpm2html:
Program received signal SIGABRT, Aborted.
0x401c8801 in __kill () from /lib/i686/libc.so.6
(gdb) where
#0 0x401c8801 in __kill () from /lib/i686/libc.so.6
#1 0x401c85da in raise (sig=6) at ../sysdeps/posix/raise.c:27
#2 0x401c9d82 in abort () at ../sysdeps/generic/abort.c:88
#3 0x401c1cca in __assert_fail () at assert.c:60
#4 0x4009b645 in headerLoad () from /usr/lib/librpm.so.0
#5 0x4009c1b4 in headerRead () from /usr/lib/librpm.so.0
#6 0x400a56fc in readPackageHeaders () from /usr/lib/librpm.so.0
#7 0x400a5980 in rpmReadPackageHeader () from /usr/lib/librpm.so.0
#8 0x0804c9bc in rpmOpen (nameRpm=0x809379b "egcs-c++-1.1b-2.sparc.rpm",
dir=0x808bf48, tree=0x80932e0) at rpmopen.c:949
#9 0x0804cdbd in rpmOneDirScan (dir=0x808bf48, tree=0x80932e0)
at rpmopen.c:1174
#10 0x0804cf50 in rpmDirScan (dir=0x808bf48, tree=0x807ec48) at
rpmopen.c:1233
#11 0x0804d331 in rpmDirScanOneDir (
directory=0xbffff91e "/serveur/ftp/linux/contrib/libc6/sparc")
at rpmopen.c:1382
#12 0x0804a811 in main (argc=4, argv=0xbffff79c) at rpm2html.c:175
#13 0x401b7177 in __libc_start_main (main=0x804a340 <main>, argc=4,
ubp_av=0xbffff79c, init=0x8049a14 <_init>, fini=0x80602c0 <_fini>,
rtld_fini=0x4000e184 <_dl_fini>, stack_end=0xbffff78c)
at ../sysdeps/generic/libc-start.c:129
(gdb) r
Expected Results:
a failure of the rpmReadPackageHeader() call
Additional Information:

Should be mostly fixed in rpm-4.0.3-0.24 and later. There may still be some
obscure pathways that fail with bad data on assert, so please reopen with
a test case if you find such a pathway, and I'll get that pathway fixed as well.

Note

You need to
log in
before you can comment on or make changes to this bug.