|
rpm 5.3.7
|
#include "system.h"#include <netinet/in.h>#include <rpmiotypes.h>#include <rpmio_internal.h>#include <rpmcb.h>#include <rpmbc.h>#include <rpmmacro.h>#include <rpmhkp.h>#include <rpmku.h>#include "header_internal.h"#include <rpmdb.h>#include <pkgio.h>#include "rpmts.h"#include <rpmxar.h>#include "signature.h"#include "debug.h"
Go to the source code of this file.
Data Structures | |
| struct | rpmlead |
| The lead data structure. More... | |
Defines | |
| #define | _RPMIOB_INTERNAL |
| #define | _RPMHKP_INTERNAL |
| #define | _RPMTAG_INTERNAL |
| #define | _RPMTS_INTERNAL |
| #define | timedRead (ufdio->read) |
Functions | |
| ssize_t | timedRead (FD_t fd, void *bufptr, size_t length) |
| static rpmRC | rpmWriteHeader (FD_t fd, Header h, const char **msg) |
| Write (with unload) header to file handle. | |
| rpmop | rpmtsOp (rpmts ts, rpmtsOpX opx) |
| Retrieve operation timestamp from a transaction set. | |
| pgpDigParams | rpmtsPubkey (const rpmts ts) |
| Return OpenPGP pubkey constants. | |
| rpmdb | rpmtsGetRdb (rpmts ts) |
| Get transaction set database handle. | |
| rpmRC | rpmtsFindPubkey (rpmts ts, void *_dig) |
| Retrieve pubkey from rpm database. | |
| pgpDig | rpmtsDig (rpmts ts) |
| Get OpenPGP packet parameters, i.e. | |
| void | rpmtsCleanDig (rpmts ts) |
| Free signature verification data. | |
| static rpmRC | wrLead (FD_t fd, const void *ptr, const char **msg) |
| Write lead to file handle. | |
| static rpmRC | rdLead (FD_t fd, void *ptr, const char **msg) |
| Read lead from file handle. | |
| static rpmRC | wrSignature (FD_t fd, void *ptr, const char **msg) |
| Write signature header. | |
| static rpmRC | printSize (FD_t fd, size_t siglen, size_t pad, size_t datalen) |
| Print package size. | |
| static rpmRC | rdSignature (FD_t fd, void *ptr, const char **msg) |
| Read (and verify header+payload size) signature header. | |
| rpmRC | headerCheck (pgpDig dig, const void *uh, size_t uc, const char **msg) |
| Check header consistency, performing headerGet() the hard way. | |
| static size_t | szHeader (const void *ptr) |
| Return size of Header. | |
| static rpmRC | ckHeader (FD_t fd, const void *ptr, const char **msg) |
| Check metadata header. | |
| static rpmRC | rpmReadHeader (FD_t fd, Header *hdrp, const char **msg) |
| Return checked and loaded header. | |
| static rpmRC | rdHeader (FD_t fd, void *ptr, const char **msg) |
| Read metadata header. | |
| static rpmRC | wrHeader (FD_t fd, void *ptr, const char **msg) |
| Write metadata header. | |
| size_t | rpmpkgSizeof (const char *fn, const void *ptr) |
| Return size of item in bytes. | |
| rpmRC | rpmpkgCheck (const char *fn, FD_t fd, const void *ptr, const char **msg) |
| Verify item integrity. | |
| rpmRC | rpmpkgRead (const char *fn, FD_t fd, void *ptr, const char **msg) |
| Read item from file descriptor. | |
| rpmRC | rpmpkgWrite (const char *fn, FD_t fd, void *ptr, const char **msg) |
| Write item onto file descriptor. | |
Variables | |
| int | _pkgio_debug = 0 |
| static unsigned char | lead_magic [] |
Definition in file pkgio.c.
| #define timedRead (ufdio->read) |
Definition at line 57 of file pkgio.c.
Referenced by rdLead(), rdSignature(), and rpmReadHeader().
Check metadata header.
| fd | file handle |
| ptr | metadata header |
| *msg | failure msg |
Definition at line 1344 of file pkgio.c.
References headerFree(), headerLoad(), RPMRC_FAIL, and RPMRC_OK.
Referenced by rpmpkgCheck().
Check header consistency, performing headerGet() the hard way.
Check header consistency, performing headerGetEntry() the hard way.
Sanity checks on the header are performed while looking for a header-only digest or signature to verify the blob. If found, the digest or signature is verified.
| dig | signature parameters container |
| uh | unloaded header blob |
| uc | no. of bytes in blob (or 0 to disable) |
| *msg | signature verification msg |
Definition at line 1009 of file pkgio.c.
References _, _free(), _pkgio_debug, alloca(), entryInfo_s::count, headerGetMagic(), headerVerifyInfo(), indexEntry_s::info, entryInfo_s::offset, pgpDigVSFlags, pgpGetSig(), PGPHASHALGO_SHA1, pgpPktLen(), pgpSetSig(), pgpStatsAccumulator(), REGION_TAG_COUNT, RPM_BIN_TYPE, RPM_STRING_TYPE, RPMDIGEST_NONE, rpmDigestInit(), rpmDigestUpdate(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, rpmswEnter(), rpmswExit(), RPMTAG_HEADERIMMUTABLE, rpmVerifySignature(), RPMVSF_NODSAHEADER, RPMVSF_NORSAHEADER, RPMVSF_NOSHA1HEADER, snprintf(), entryInfo_s::tag, entryInfo_s::type, vsflags, xmalloc(), and xstrdup().
Referenced by rpmReadHeader(), and rpmts_HdrCheck().
Print package size.
| fd | package file handle |
| siglen | signature header size |
| pad | signature padding |
| datalen | length of header+payload |
Definition at line 703 of file pkgio.c.
References D_, Fileno(), Fstat(), rpmlog(), RPMLOG_DEBUG, rpmpkgSizeof(), RPMRC_FAIL, and RPMRC_OK.
Referenced by rdSignature().
Read metadata header.
| fd | file handle |
| *ptr | metadata header (or NULL) |
| *msg | failure msg |
Definition at line 1561 of file pkgio.c.
References rpmReadHeader().
Referenced by rpmpkgRead().
Read lead from file handle.
| fd | file handle |
| *ptr | package lead |
| *msg | failure msg |
Definition at line 539 of file pkgio.c.
References _, _free(), _pkgio_debug, errno, fdGetOPath(), fdGetXAR(), fdSetXAR(), Ferror(), Fstrerror(), lead_magic, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, rpmxarFree(), rpmxarNew(), rpmxarNext(), rpmxarPull(), rpmxarSwapBuf(), snprintf(), timedRead, xcalloc(), and xstrdup().
Referenced by rpmpkgRead().
Read (and verify header+payload size) signature header.
| fd | file handle |
| *ptr | signature header (or NULL) |
| *msg | failure msg |
< Is 1st header region mmap'd?
< Is 1st header region rdonly?
< Is 1st header region allocated?
< Signature header?
Definition at line 743 of file pkgio.c.
References _, _free(), _pkgio_debug, alloca(), entryInfo_s::count, errno, fdGetXAR(), FDSTAT_READ, headerToken_s::flags, HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, HEADERFLAG_SIGNATURE, headerFree(), headerGet(), headerGetMagic(), headerLink(), headerLoad(), headerSetEndOff(), headerSetStartOff(), headerSizeof(), headerVerifyInfo(), indexEntry_s::info, entryInfo_s::offset, _HE_s::p, printSize(), rpmDataType_u::ptr, REGION_TAG_COUNT, RPM_BIN_TYPE, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMSIGTAG_SIZE, RPMTAG_HEADERIMAGE, RPMTAG_HEADERSIGNATURES, rpmxarNext(), rpmxarPull(), snprintf(), _FD_s::stats, _HE_s::tag, entryInfo_s::tag, timedRead, entryInfo_s::type, rpmDataType_u::ui32p, xmalloc(), and xstrdup().
Referenced by rpmpkgRead().
Verify item integrity.
| fn | item name |
| fd | file handle |
| ptr | item buffer |
| *msg | item check failure message |
Definition at line 1607 of file pkgio.c.
References ckHeader(), and RPMRC_FAIL.
Read item from file descriptor.
| fn | item name |
| fd | file handle |
| *ptr | item buffer |
| *msg | item check failure message |
Definition at line 1619 of file pkgio.c.
References rdHeader(), rdLead(), rdSignature(), and RPMRC_FAIL.
Referenced by makeHDRSignature(), readFile(), rpmgiNext(), rpmReadHeaders(), rpmReadPackageFile(), rpmReSign(), rpmSingleHeaderFromFD(), rpmVerifySignatures(), and writeRPM().
| size_t rpmpkgSizeof | ( | const char * | fn, |
| const void * | ptr | ||
| ) |
Return size of item in bytes.
| fn | item name |
| ptr | item buffer |
Definition at line 1591 of file pkgio.c.
References szHeader().
Referenced by printSize(), rpmpsmStage(), and writeRPM().
Write item onto file descriptor.
| fn | item name |
| fd | file handle |
| ptr | item buffer |
| *msg | item check failure message |
Definition at line 1637 of file pkgio.c.
References RPMRC_FAIL, wrHeader(), wrLead(), and wrSignature().
Referenced by makeHDRSignature(), rpmpsmStage(), rpmReSign(), rpmWriteHeaders(), and writeRPM().
Return checked and loaded header.
| fd | file handle |
| hdrp | address of header (or NULL) |
| *msg | verification error message (or NULL) |
< Is 1st header region mmap'd?
< Is 1st header region rdonly?
< Is 1st header region allocated?
Definition at line 1368 of file pkgio.c.
References _, _free(), _pkgio_debug, errno, fdGetDig(), fdGetOPath(), fdGetXAR(), fdSetDig(), FDSTAT_READ, headerToken_s::flags, Fstat(), hdrchkData, hdrchkTags, headerCheck(), HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, headerFree(), headerGetMagic(), headerGetStatbuf(), headerLink(), headerLoad(), headerSetEndOff(), headerSetOrigin(), headerSetStartOff(), pgpDigFree(), pgpDigLink(), pgpDigNew(), Realpath(), RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMVSF_DEFAULT, rpmxarNext(), rpmxarPull(), snprintf(), _FD_s::stats, timedRead, urlPath(), xmalloc(), and xstrdup().
Referenced by rdHeader().
| static size_t szHeader | ( | const void * | ptr | ) | [static] |
Return size of Header.
| ptr | metadata header (at least 32 bytes) |
Definition at line 1327 of file pkgio.c.
Referenced by rpmpkgSizeof().
| ssize_t timedRead | ( | FD_t | fd, |
| void * | bufptr, | ||
| size_t | length | ||
| ) |
Write metadata header.
| fd | file handle |
| ptr | metadata header |
| *msg | failure msg |
Definition at line 1579 of file pkgio.c.
References rpmWriteHeader().
Referenced by rpmpkgWrite().
Write lead to file handle.
| fd | file handle |
| ptr | package lead |
| *msg | name to include in lead (or NULL) |
Definition at line 501 of file pkgio.c.
References _pkgio_debug, rpmlead::archnum, Fwrite(), lead_magic, rpmlead::magic, rpmlead::major, rpmlead::name, rpmlead::osnum, RPMRC_FAIL, RPMRC_OK, rpmlead::signature_type, and rpmlead::type.
Referenced by rpmpkgWrite().
Write signature header.
| fd | file handle |
| ptr | signature header |
| *msg | failure msg |
Definition at line 666 of file pkgio.c.
References _pkgio_debug, D_, Fwrite(), headerSizeof(), rpmlog(), RPMLOG_DEBUG, RPMRC_FAIL, RPMRC_OK, and rpmWriteHeader().
Referenced by rpmpkgWrite().
| int _pkgio_debug = 0 |
Definition at line 49 of file pkgio.c.
Referenced by headerCheck(), rdLead(), rdSignature(), rpmReadHeader(), rpmWriteHeader(), wrLead(), and wrSignature().
unsigned char lead_magic[] [static] |
1.7.3