#include "system.h"
#include <netinet/in.h>
#include <rpmio_internal.h>
#include <rpmlib.h>
#include "rpmts.h"
#include "misc.h"
#include "legacy.h"
#include "rpmlead.h"
#include "header_internal.h"
#include "signature.h"
#include "debug.h"
Go to the source code of this file.
Defines | |
#define | alloca_strdup(_s) strcpy(alloca(strlen(_s)+1), (_s)) |
#define | hdrchkTags(_ntags) ((_ntags) & 0xffff0000) |
Sanity check on no. | |
#define | hdrchkType(_type) ((_type) < RPM_MIN_TYPE || (_type) > RPM_MAX_TYPE) |
Sanity check on type values. | |
#define | hdrchkData(_nbytes) ((_nbytes) & 0xff000000) |
Sanity check on data size and/or offset and/or count. | |
#define | hdrchkAlign(_type, _off) ((_off) & (typeAlign[_type]-1)) |
Sanity check on data alignment for data type. | |
#define | hdrchkRange(_dl, _off) ((_off) < 0 || (_off) > (_dl)) |
Sanity check on range of data offset. | |
#define | _chk(_mask) (sigtag == 0 && !(vsflags & (_mask))) |
Functions | |
void | headerMergeLegacySigs (Header h, const Header sigh) |
Header | headerRegenSigHeader (const Header h, int noArchiveSize) |
int | rpmtsStashKeyid (rpmts ts) |
Remember current key id. | |
int | headerVerifyInfo (int il, int dl, const void *pev, void *iv, int negate) |
Perform simple sanity and range checks on header tag(s). | |
rpmRC | headerCheck (rpmts ts, const void *uh, size_t uc, const char **msg) |
Check header consistency, performing headerGetEntry() the hard way. | |
rpmRC | rpmReadHeader (rpmts ts, FD_t fd, Header *hdrp, const char **msg) |
Return checked and loaded header. | |
int | rpmReadPackageFile (rpmts ts, FD_t fd, const char *fn, Header *hdrp) |
Return package header from file handle, verifying digests/signatures. | |
Variables | |
int | _print_pkts = 0 |
unsigned int | nkeyids_max = 256 |
unsigned int | nkeyids = 0 |
unsigned int | nextkeyid = 0 |
unsigned int * | keyids |
unsigned char | header_magic [8] |
int | typeAlign [16] |
Alignment needs (and sizeof scalars types) for internal rpm data types. |
Definition in file package.c.
|
|
|
|
|
Sanity check on data alignment for data type.
Definition at line 91 of file package.c. Referenced by headerVerifyInfo(), and regionSwab(). |
|
Sanity check on data size and/or offset and/or count. This check imposes a limit of 16 MB, more than enough. Definition at line 86 of file package.c. Referenced by doHeaderUnload(), headerAddEntry(), headerCopyLoad(), headerLoad(), headerMergeLegacySigs(), headerRead(), headerVerifyInfo(), regionSwab(), and rpmReadHeader(). |
|
Sanity check on range of data offset.
Definition at line 96 of file package.c. Referenced by headerVerifyInfo(). |
|
Sanity check on no. of tags. This check imposes a limit of 65K tags, more than enough. Definition at line 75 of file package.c. Referenced by doHeaderUnload(), headerCopyLoad(), headerLoad(), headerRead(), and rpmReadHeader(). |
|
Sanity check on type values.
Definition at line 80 of file package.c. Referenced by headerAddEntry(), headerLoad(), headerMergeLegacySigs(), headerVerifyInfo(), and regionSwab(). |
|
|
Perform simple sanity and range checks on header tag(s).
Definition at line 281 of file package.c. References entryInfo_s::count, hdrchkAlign, hdrchkData, hdrchkRange, hdrchkType, entryInfo_s::offset, entryInfo_s::tag, and entryInfo_s::type. Referenced by headerCheck(), and rpmReadSignature(). |
|
Return checked and loaded header.
Definition at line 632 of file package.c. References _, _free(), headerToken_s::flags, hdrchkData, hdrchkTags, header_magic, headerCheck(), HEADERFLAG_ALLOCATED, headerFree(), headerLink(), headerLoad(), int_32, rpmRC, RPMRC_FAIL, RPMRC_OK, rpmts, snprintf(), timedRead, xmalloc(), and xstrdup(). Referenced by rpmReadPackageFile(). |
|
Return package header from file handle, verifying digests/signatures.
Definition at line 730 of file package.c. References _, _free(), _print_pkts, alloca(), byte, _FD_s::digests, fdInitDigest(), Fileno(), Fread(), Fstrerror(), _FDDIGEST_s::hashalgo, _FDDIGEST_s::hashctx, pgpDig_s::hdrsha1ctx, header_magic, HEADER_MAGIC_NO, HEADER_MAGIC_YES, headerFree(), headerFreeData(), headerGetEntry(), headerIsEntry(), headerLink(), headerMergeLegacySigs(), headerSizeof(), int_32, legacyRetrofit(), rpmlead::major, pgpDig_s::md5ctx, pgpDig_s::nbytes, _FD_s::ndigests, PGPHASHALGO_MD5, PGPHASHALGO_SHA1, pgpPrtPkts(), readLead(), RPMDIGEST_NONE, rpmDigestInit(), rpmDigestUpdate(), RPMERR_FREAD, RPMERR_NEWPACKAGE, RPMERR_SIGGEN, rpmError, rpmFreeSignature(), rpmIsDebug, RPMMESS_DEBUG, RPMMESS_ERROR, RPMMESS_WARNING, rpmMessage, rpmRC, RPMRC_FAIL, RPMRC_NOKEY, RPMRC_NOTFOUND, RPMRC_NOTTRUSTED, RPMRC_OK, rpmReadHeader(), rpmReadSignature(), RPMSIGTAG_DSA, RPMSIGTAG_GPG, RPMSIGTAG_MD5, RPMSIGTAG_PGP, RPMSIGTAG_PGP5, RPMSIGTAG_RSA, RPMSIGTAG_SHA1, RPMTAG_HEADERIMMUTABLE, rpmts, rpmtsCleanDig(), rpmtsDig(), rpmtsSetSig(), rpmtsStashKeyid(), rpmtsVSFlags(), rpmVerifySignature(), RPMVSF_NEEDPAYLOAD, RPMVSF_NODSA, RPMVSF_NODSAHEADER, RPMVSF_NOMD5, RPMVSF_NORSA, RPMVSF_NORSAHEADER, RPMVSF_NOSHA1HEADER, rpmVSFlags, pgpDig_s::sha1ctx, pgpDig_s::signature, rpmlead::signature_type, and pgpDigParams_s::version. Referenced by ftsStashLatest(), IDTXglob(), main(), readRPM(), rpmGraph(), rpmInstall(), rpmInstallSourcePackage(), rpmQueryVerify(), rpmts_HdrFromFdno(), rpmtsRun(), and rpmtsSolve(). |
|
Remember current key id.
Definition at line 242 of file package.c. References keyids, nextkeyid, nkeyids, nkeyids_max, pgpGrab(), rpmts, rpmtsDig(), rpmtsSig(), rpmtsSignature(), pgpDigParams_s::signid, and xrealloc(). Referenced by rpmReadPackageFile(). |
|
Definition at line 32 of file package.c. Referenced by headerCheck(), rpmReadPackageFile(), and rpmVerifySignatures(). |
|
Initial value: { 0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00 } Definition at line 44 of file package.c. Referenced by headerCheck(), rpmReadHeader(), and rpmReadPackageFile(). |
|
Definition at line 41 of file package.c. Referenced by rpmtsStashKeyid(). |
|
Definition at line 39 of file package.c. Referenced by rpmtsStashKeyid(). |
|
Definition at line 37 of file package.c. Referenced by rpmtsStashKeyid(). |
|
Definition at line 35 of file package.c. Referenced by rpmtsStashKeyid(). |
|
Initial value: { 1, 1, 1, 2, 4, 8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }
|