rpm
5.4.14
|
#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... | |
Macros | |
#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. More... | |
rpmop | rpmtsOp (rpmts ts, rpmtsOpX opx) |
Retrieve operation timestamp from a transaction set. More... | |
pgpDigParams | rpmtsPubkey (const rpmts ts) |
Return OpenPGP pubkey constants. More... | |
rpmdb | rpmtsGetRdb (rpmts ts) |
Get transaction set database handle. More... | |
rpmRC | rpmtsFindPubkey (rpmts ts, void *_dig) |
Retrieve pubkey from rpm database. More... | |
pgpDig | rpmtsDig (rpmts ts) |
Get OpenPGP packet parameters, i.e. More... | |
void | rpmtsCleanDig (rpmts ts) |
Free signature verification data. More... | |
static rpmRC | wrLead (FD_t fd, const void *ptr, const char **msg) |
Write lead to file handle. More... | |
static rpmRC | rdLead (FD_t fd, void *ptr, const char **msg) |
Read lead from file handle. More... | |
static rpmRC | wrSignature (FD_t fd, void *ptr, const char **msg) |
Write signature header. More... | |
static rpmRC | printSize (FD_t fd, size_t siglen, size_t pad, size_t datalen) |
Print package size. More... | |
static rpmRC | rdSignature (FD_t fd, void *ptr, const char **msg) |
Read (and verify header+payload size) signature header. More... | |
rpmRC | headerCheck (pgpDig dig, const void *uh, size_t uc, const char **msg) |
Check header consistency, performing headerGet() the hard way. More... | |
static size_t | szHeader (const void *ptr) |
Return size of Header. More... | |
static rpmRC | ckHeader (FD_t fd, const void *ptr, const char **msg) |
Check metadata header. More... | |
static rpmRC | rpmReadHeader (FD_t fd, Header *hdrp, const char **msg) |
Return checked and loaded header. More... | |
static rpmRC | rdHeader (FD_t fd, void *ptr, const char **msg) |
Read metadata header. More... | |
static rpmRC | wrHeader (FD_t fd, void *ptr, const char **msg) |
Write metadata header. More... | |
size_t | rpmpkgSizeof (const char *fn, const void *ptr) |
Return size of item in bytes. More... | |
rpmRC | rpmpkgCheck (const char *fn, FD_t fd, const void *ptr, const char **msg) |
Verify item integrity. More... | |
rpmRC | rpmpkgRead (const char *fn, FD_t fd, void *ptr, const char **msg) |
Read item from file descriptor. More... | |
rpmRC | rpmpkgWrite (const char *fn, FD_t fd, void *ptr, const char **msg) |
Write item onto file descriptor. More... | |
Variables | |
int | _pkgio_debug = 0 |
static unsigned char | lead_magic [] |
#define timedRead (ufdio->read) |
Definition at line 63 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 1372 of file pkgio.c.
References h, headerFree, headerLoad(), NULL, rc, RPMRC_FAIL, RPMRC_OK, and void.
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 1027 of file pkgio.c.
References _, _free(), alloca(), assert(), b, buf, entryInfo_s::count, exit, fprintf(), headerGetMagic(), headerVerifyInfo(), i, indexEntry_s::info, int, memset(), nb, NULL, entryInfo_s::offset, op, pgpDigVSFlags, pgpGetSig(), PGPHASHALGO_SHA1, pgpPktLen(), pgpSetSig(), pgpStatsAccumulator(), rc, REGION_TAG_COUNT, REGION_TAG_TYPE, RPM_BIN_TYPE, RPM_STRING_TYPE, RPMDIGEST_NONE, rpmDigestInit(), rpmDigestUpdate(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, rpmswEnter(), rpmswExit(), RPMTAG_DSAHEADER, RPMTAG_HEADERIMMUTABLE, RPMTAG_RSAHEADER, RPMTAG_SHA1HEADER, rpmVerifySignature(), RPMVSF_NODSAHEADER, RPMVSF_NORSAHEADER, RPMVSF_NOSHA1HEADER, siglen, snprintf(), entryInfo_s::tag, entryInfo_s::type, unsigned, void, vsflags, xmalloc, xstrdup(), and xx.
Referenced by rpmReadHeader(), and showVerifyPackage().
Print package size.
fd | package file handle |
siglen | signature header size |
pad | signature padding |
datalen | length of header+payload |
Definition at line 711 of file pkgio.c.
References D_, fdno, Fileno(), Fstat(), NULL, rpmlog(), RPMLOG_DEBUG, rpmpkgSizeof(), RPMRC_FAIL, RPMRC_OK, and st.
Referenced by rdSignature().
Read metadata header.
fd | file handle |
*ptr | metadata header (or NULL) |
*msg | failure msg |
Definition at line 1589 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 547 of file pkgio.c.
References _, _free(), rpmlead::archnum, assert(), b, buf, errno, exit, fdGetOPath(), fdGetXAR(), fdSetXAR(), Ferror(), fn, fprintf(), Fstrerror(), rpmlead::magic, rpmlead::major, nb, NULL, rpmlead::osnum, rc, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, rpmxarFree(), rpmxarNew(), rpmxarNext(), rpmxarPull(), rpmxarSwapBuf(), rpmlead::signature_type, snprintf(), timedRead, rpmlead::type, unsigned, void, xcalloc(), xstrdup(), and xx.
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 751 of file pkgio.c.
References _, _free(), alloca(), assert(), buf, entryInfo_s::count, errno, exit, fdGetXAR(), fdno, FDSTAT_READ, headerToken_s::flags, flags, fprintf(), HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, HEADERFLAG_SIGNATURE, headerFree, headerGet(), headerGetMagic(), headerLink(), headerLoad(), headerSetEndOff(), headerSetStartOff(), headerSizeof(), headerVerifyInfo(), i, indexEntry_s::info, int, memset(), nb, NULL, entryInfo_s::offset, _HE_s::p, printSize(), rpmDataType_u::ptr, rc, REGION_TAG_COUNT, REGION_TAG_TYPE, RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMSIGTAG_SIZE, RPMTAG_HEADERIMAGE, RPMTAG_HEADERSIGNATURES, rpmxarNext(), rpmxarPull(), snprintf(), _FD_s::stats, entryInfo_s::tag, _HE_s::tag, timedRead, entryInfo_s::type, rpmDataType_u::ui32p, unsigned, void, xmalloc, xstrdup(), and xx.
Referenced by rpmpkgRead().
Verify item integrity.
fn | item name |
fd | file handle |
ptr | item buffer |
*msg | item check failure message |
Definition at line 1635 of file pkgio.c.
References ckHeader(), NULL, rc, RPMRC_FAIL, and strcmp().
Read item from file descriptor.
fn | item name |
fd | file handle |
*ptr | item buffer |
*msg | item check failure message |
Definition at line 1647 of file pkgio.c.
References NULL, rc, rdHeader(), rdLead(), rdSignature(), RPMRC_FAIL, and strcmp().
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 1619 of file pkgio.c.
References len, strcmp(), and 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 1665 of file pkgio.c.
References NULL, rc, RPMRC_FAIL, strcmp(), 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 1396 of file pkgio.c.
References _, _free(), b, buf, dig, errno, exit, fdGetDig(), fdGetOPath(), fdGetXAR(), fdno, fdSetDig(), FDSTAT_READ, headerToken_s::flags, flags, fprintf(), Fstat(), h, hdrchkData, hdrchkTags, headerCheck(), HEADERFLAG_ALLOCATED, HEADERFLAG_MAPPED, HEADERFLAG_RDONLY, headerFree, headerGetMagic(), headerGetStatbuf(), headerLink(), headerLoad(), headerSetEndOff(), headerSetOrigin(), headerSetStartOff(), int, memset(), nb, NULL, pgpDigFree(), pgpDigLink(), pgpDigNew(), rc, Realpath(), RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMVSF_DEFAULT, rpmxarNext(), rpmxarPull(), snprintf(), st, _FD_s::stats, timedRead, uc, unsigned, urlPath(), void, xmalloc, xstrdup(), and xx.
Referenced by rdHeader().
|
static |
Write metadata header.
fd | file handle |
ptr | metadata header |
*msg | failure msg |
Definition at line 1607 of file pkgio.c.
References h, and 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 509 of file pkgio.c.
References rpmlead::archnum, fd, fprintf(), Fwrite(), rpmlead::magic, rpmlead::major, rpmlead::name, rpmlead::osnum, RPMRC_FAIL, RPMRC_OK, rpmlead::signature_type, strncpy(), rpmlead::type, and void.
Referenced by rpmpkgWrite().
Write signature header.
fd | file handle |
ptr | signature header |
*msg | failure msg |
Definition at line 674 of file pkgio.c.
References D_, fd, fprintf(), Fwrite(), headerSizeof(), rc, rpmlog(), RPMLOG_DEBUG, RPMRC_FAIL, RPMRC_OK, and rpmWriteHeader().
Referenced by rpmpkgWrite().