rpm  5.4.15
Data Structures | Macros | Typedefs | Functions | Variables
verify.c File Reference

Verify installed payload files from package metadata. More...

#include "system.h"
#include <rpmiotypes.h>
#include <rpmio.h>
#include <rpmcb.h>
#include "ugid.h"
#include <rpmtypes.h>
#include <rpmtag.h>
#include <pkgio.h>
#include <rpmfi.h>
#include "psm.h"
#include "legacy.h"
#include <rpmcli.h>
#include "debug.h"
Include dependency graph for verify.c:

Go to the source code of this file.

Data Structures

struct  rpmvf_s
 

Macros

#define _RPMFI_INTERNAL
 
#define _RPMSQ_INTERNAL
 
#define _RPMPS_INTERNAL   /* XXX rpmps needs iterator. */
 
#define _RPMTS_INTERNAL   /* XXX expose rpmtsSetScriptFd */
 
#define S_ISDEV(m)   (S_ISBLK((m)) || S_ISCHR((m)))
 
#define FF_ISSET(_fflags, _FLAG)   ((_fflags) & (RPMFILE_##_FLAG))
 
#define VF_ISSET(_vflags, _FLAG)   ((_vflags) & (RPMVERIFY_##_FLAG))
 
#define VF_SET(_vflags, _FLAG)   (_vflags) |= (RPMVERIFY_##_FLAG)
 
#define VF_CLR(_vflags, _FLAG)   (_vflags) &= ~(RPMVERIFY_##_FLAG)
 
#define QVA_ISSET(_qvaflags, _FLAG)   ((_qvaflags) & (VERIFY_##_FLAG))
 
#define VSF_ISSET(_vsflags, _FLAG)   ((_vsflags) & (RPMVSF_##_FLAG))
 
#define VSF_SET(_vsflags, _FLAG)   (_vsflags) |= (RPMVSF_##_FLAG)
 
#define VSF_CLR(_vsflags, _FLAG)   (_vsflags) &= ~(RPMVSF_##_FLAG)
 
#define _mask   (RPMVERIFY_FDIGEST|RPMVERIFY_HMAC)
 
#define _verify(_FLAG, _C)   (VF_ISSET(res, _FLAG) ? _C : aok)
 
#define _verifylink(_FLAG, _C)
 
#define _verifyfile(_FLAG, _C)
 

Typedefs

typedef struct rpmvf_srpmvf
 

Functions

static rpmvf rpmvfFree (rpmvf vf)
 
static rpmvf rpmvfNew (rpmts ts, rpmfi fi, int i, rpmVerifyAttrs omitMask)
 
static int rpmvfVerify (rpmvf vf, int spew)
 Verify file attributes (including file digest). More...
 
static int rpmVerifyScript (QVA_t qva, rpmts ts, rpmfi fi, FD_t scriptFd)
 Return exit code from running verify script from header. More...
 
static int verifyDependencies (QVA_t qva, rpmts ts, Header h)
 Check installed package dependencies for problems. More...
 
int showVerifyPackage (QVA_t qva, rpmts ts, Header h)
 Display results of package verify. More...
 
int rpmcliVerify (rpmts ts, QVA_t qva, const char **argv)
 Verify package install. More...
 

Variables

int _rpmds_unspecified_epoch_noise
 

Detailed Description

Verify installed payload files from package metadata.

Definition in file verify.c.

Macro Definition Documentation

#define _mask   (RPMVERIFY_FDIGEST|RPMVERIFY_HMAC)

Referenced by rpmvfVerify().

#define _RPMFI_INTERNAL

Definition at line 17 of file verify.c.

#define _RPMPS_INTERNAL   /* XXX rpmps needs iterator. */

Definition at line 25 of file verify.c.

#define _RPMSQ_INTERNAL

Definition at line 20 of file verify.c.

#define _RPMTS_INTERNAL   /* XXX expose rpmtsSetScriptFd */

Definition at line 26 of file verify.c.

#define _verify (   _FLAG,
  _C 
)    (VF_ISSET(res, _FLAG) ? _C : aok)

Referenced by rpmvfVerify().

#define _verifyfile (   _FLAG,
  _C 
)
Value:
(VF_ISSET(res, READFAIL) ? unknown : \
VF_ISSET(res, _FLAG) ? _C : aok)
#define VF_ISSET(_vflags, _FLAG)
Definition: verify.c:83

Referenced by rpmvfVerify().

#define _verifylink (   _FLAG,
  _C 
)
Value:
(VF_ISSET(res, READLINKFAIL) ? unknown : \
VF_ISSET(res, _FLAG) ? _C : aok)
#define VF_ISSET(_vflags, _FLAG)
Definition: verify.c:83

Referenced by rpmvfVerify().

#define FF_ISSET (   _fflags,
  _FLAG 
)    ((_fflags) & (RPMFILE_##_FLAG))

Definition at line 81 of file verify.c.

Referenced by rpmvfNew(), rpmvfVerify(), and showVerifyPackage().

#define QVA_ISSET (   _qvaflags,
  _FLAG 
)    ((_qvaflags) & (VERIFY_##_FLAG))

Definition at line 87 of file verify.c.

Referenced by rpmcliVerify().

#define S_ISDEV (   m)    (S_ISBLK((m)) || S_ISCHR((m)))

Definition at line 34 of file verify.c.

Referenced by rpmvfVerify().

#define VF_CLR (   _vflags,
  _FLAG 
)    (_vflags) &= ~(RPMVERIFY_##_FLAG)

Definition at line 85 of file verify.c.

Referenced by rpmvfNew(), and rpmvfVerify().

#define VF_ISSET (   _vflags,
  _FLAG 
)    ((_vflags) & (RPMVERIFY_##_FLAG))

Definition at line 83 of file verify.c.

Referenced by rpmvfVerify().

#define VF_SET (   _vflags,
  _FLAG 
)    (_vflags) |= (RPMVERIFY_##_FLAG)

Definition at line 84 of file verify.c.

Referenced by rpmvfVerify().

#define VSF_CLR (   _vsflags,
  _FLAG 
)    (_vsflags) &= ~(RPMVSF_##_FLAG)

Definition at line 91 of file verify.c.

Referenced by rpmcliVerify().

#define VSF_ISSET (   _vsflags,
  _FLAG 
)    ((_vsflags) & (RPMVSF_##_FLAG))

Definition at line 89 of file verify.c.

#define VSF_SET (   _vsflags,
  _FLAG 
)    (_vsflags) |= (RPMVSF_##_FLAG)

Definition at line 90 of file verify.c.

Referenced by rpmcliVerify().

Typedef Documentation

typedef struct rpmvf_s* rpmvf

Definition at line 39 of file verify.c.

Function Documentation

int rpmcliVerify ( rpmts  ts,
QVA_t  qva,
const char **  argv 
)

Verify package install.

Todo:
hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
Parameters
tstransaction set
qvaparsed query/verify options
argvverify argument(s) (or NULL)
Returns
0 on success, else no. of failures

Definition at line 655 of file verify.c.

References rpmQVKArguments_s::depFlags, rpmQVKArguments_s::qva_flags, QVA_ISSET, rpmQVKArguments_s::qva_showPackage, rpmcliArgIter(), rpmExpandNumeric(), rpmtsEmpty(), rpmtsSetDFlags(), rpmtsSetFlags(), rpmtsSetVSFlags(), showVerifyPackage(), tagName(), rpmQVKArguments_s::transFlags, VSF_CLR, VSF_SET, and vsflags.

Referenced by main().

static int rpmVerifyScript ( QVA_t  qva,
rpmts  ts,
rpmfi  fi,
FD_t  scriptFd 
)
static

Return exit code from running verify script from header.

Todo:
malloc/free/refcount handling is fishy here.
Parameters
qvaparsed query/verify options
tstransaction set
fifile info set
scriptFdfile handle to use for stderr (or NULL)
Returns
0 on success

Definition at line 429 of file verify.c.

References rpmpsmFree(), rpmpsmNew(), rpmpsmScriptStage(), RPMRC_OK, RPMTAG_SANITYCHECK, RPMTAG_SANITYCHECKPROG, RPMTAG_VERIFYSCRIPT, RPMTAG_VERIFYSCRIPTPROG, and rpmtsSetScriptFd().

Referenced by showVerifyPackage().

static rpmvf rpmvfFree ( rpmvf  vf)
static
static rpmvf rpmvfNew ( rpmts  ts,
rpmfi  fi,
int  i,
rpmVerifyAttrs  omitMask 
)
static
static int rpmvfVerify ( rpmvf  vf,
int  spew 
)
static
int showVerifyPackage ( QVA_t  qva,
rpmts  ts,
Header  h 
)
static int verifyDependencies ( QVA_t  qva,
rpmts  ts,
Header  h 
)
static

Check installed package dependencies for problems.

Parameters
qvaparsed query/verify options
tstransaction set
hheader
Returns
number of problems found (0 for no problems)

Definition at line 467 of file verify.c.

References _, alloca(), headerGetInstance(), headerGetOrigin(), rpmlog(), RPMLOG_NOTICE, rpmProblemGetAltNEVR(), rpmProblemGetPkgNEVR(), rpmpsFree(), rpmpsFreeIterator(), rpmpsInitIterator(), rpmpsNextIterator(), rpmpsNumProblems(), rpmpsProblem(), rpmtsAddEraseElement(), rpmtsAddInstallElement(), rpmtsCheck, rpmtsEmpty(), rpmtsProblems(), and stpcpy().

Referenced by showVerifyPackage().

Variable Documentation

int _rpmds_unspecified_epoch_noise

Definition at line 130 of file rpmds.c.

Referenced by showVerifyPackage().