[Rpm-maint] [rpm-software-management/rpm] Fail to check signature (#270)

Jeff Johnson notifications at github.com
Sun Dec 3 10:32:44 UTC 2017


Several points:

1) Your check for repackaged packages is what is running afoul of (what is obscurely known as) a "dribble", a tag appended to an immutable region, which is commonly found in repackaged packages (with a doubly linked upgrade chain tag appended) and in rpmdb headers (signature tags, and local installation data). You are correct that no *.rpm file has ever had a "dribble" appended, but there is nothing in a Header that prevents a "dribble" from being used.

2) headerReload() @rpm5.org does more than copy tags into a contiguous malloc. In fact, an anonymous mmap(2) is used, and mprotect(2) PROT_READ is done to prevent *all* changes to *any* header data returned as a pointer to the user. This also makes the pages used to store a Header RO, eliminates the silliness of HEADER_MINMEM permitting access directly into header data, and (as side effect) stops the overhead of swabbing all integer data on every headerLoad. Instead, data is swabbed during headerGet() returned as a malloc'd copy, to itemize just a few of the differences that prevent reasoning about the behavior from an identically named "headerReload" symbol.

3) RPMSIGTAG_PADDING can be used not only to reserve space for signatures, but also to insert block alignment between signature <-> metadata headers (useful for byte ranged HTTP), and (if also appended to the metadata header( between metadata <-> payload. Of course having the ability to do HTTP byte range retrievals suffers from "legacy compatibility" in a sense (backward compatibility is ensured by the format, but the "feature" cannot be assumed to exist in any given *.rpm without some other test).

There are yet other reasons to use a "dribble" in a *.rpm package, including unifying (by nesting immutable regions) signature <-> metadata Header's into a single blob.

Details are left in my imagination ;-)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/270#issuecomment-348754764
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20171203/8095f99d/attachment.html>


More information about the Rpm-maint mailing list