Bug 1437532

Summary: segfault in headerSigVerify()
Product: Red Hat Enterprise Linux 6 Reporter: Jan Blazek <jblazek>
Component: rpmAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED WONTFIX QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.10CC: ffesti, jkurik, tbowling
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1373107 Environment:
Last Closed: 2018-02-08 11:58:08 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1494486, 1494504    

Description Jan Blazek 2017-03-30 13:35:12 UTC
+++ This bug was initially created as a clone of Bug #1373107 +++

Description of problem:

Corrupted RPM files may crash rpm in headerSigVerify()

Version-Release number of selected component (if applicable): all, including upstream


How reproducible: 100%


Steps to Reproduce:
1. corrupt an RPM file to add a DSA, RSA or SHA1 header flag that contains data outside of allocated memory (offset + length goes beyond data length)
2. rpm -qp <RPM>


Actual results:
Crash and/or valgrind warning, with the following trace :

==11445== Invalid read of size 8   
==11445==    at 0x4C2E25E: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11445==    by 0x4E62530: UnknownInlinedFun (string3.h:51)
==11445==    by 0x4E62530: headerSigVerify (package.c:240)
==11445==    by 0x4E62530: headerVerify (package.c:363)
==11445==    by 0x4E62915: rpmpkgReadHeader (package.c:457)
==11445==    by 0x4E62BEA: rpmpkgRead (package.c:578)
==11445==    by 0x4E6352D: rpmReadPackageFile (package.c:717)
==11445==    by 0x4E6EB81: rpmgiReadHeader (rpmgi.c:90)
==11445==    by 0x4E6EB81: rpmgiLoadReadHeader (rpmgi.c:126)
==11445==    by 0x4E6EB81: rpmgiNext (rpmgi.c:216)
==11445==    by 0x4E671D8: rpmgiShowMatches (query.c:274)
==11445==    by 0x4E671D8: rpmcliArgIter (query.c:518)
==11445==    by 0x4E672A6: rpmcliQuery (query.c:568)
==11445==    by 0x401918: main (rpmqv.c:304)

Expected results:
An error message about invalid header followed by graceful exit.

Additional info:
See https://bugzilla.redhat.com/show_bug.cgi?id=1371487