- remove rpmrc Provides: Yet Again, use virtual packages.
- dump cursor debugging wrappers. - rpm --verify can disable rpmFileAttr checks. CVS patchset: 4856 CVS date: 2001/06/12 17:06:47
This commit is contained in:
parent
1b87bd9ef7
commit
7233e3ad73
3
CHANGES
3
CHANGES
|
@ -95,6 +95,9 @@
|
|||
- rpm --verify checks immutable header region digest if available.
|
||||
- rpmbuild adds header region digest (SHA1 as string).
|
||||
- use rpmTag* typedefs in new hge/hae/hme/hre header vectors.
|
||||
- remove rpmrc Provides: Yet Again, use virtual packages.
|
||||
- dump cursor debugging wrappers.
|
||||
- rpm --verify can disable rpmFileAttr checks.
|
||||
|
||||
4.0 -> 4.0.[12]
|
||||
- add doxygen and lclint annotations most everywhere.
|
||||
|
|
1
build.c
1
build.c
|
@ -6,7 +6,6 @@
|
|||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmbuild.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "build.h"
|
||||
#include "debug.h"
|
||||
|
|
|
@ -261,7 +261,6 @@ int readRPM(const char *fileName, Spec *specp, struct rpmlead *lead,
|
|||
FD_t fdi;
|
||||
Spec spec;
|
||||
rpmRC rc;
|
||||
int ec;
|
||||
|
||||
fdi = (fileName != NULL)
|
||||
? Fopen(fileName, "r.ufdio")
|
||||
|
|
|
@ -1220,7 +1220,7 @@ static int unsatisfiedDepend(rpmTransactionSet ts,
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef DYING
|
||||
#ifdef DYING
|
||||
{ static /*@observer@*/ const char noProvidesString[] = "nada";
|
||||
static /*@observer@*/ const char * rcProvidesString = noProvidesString;
|
||||
const char * start;
|
||||
|
@ -1402,7 +1402,8 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
|||
if (multiLib && !isDependsMULTILIB(requireFlags[i]))
|
||||
continue;
|
||||
|
||||
keyDepend = printDepend("R", requires[i], requiresEVR[i], requireFlags[i]);
|
||||
keyDepend = printDepend("R",
|
||||
requires[i], requiresEVR[i], requireFlags[i]);
|
||||
|
||||
rc = unsatisfiedDepend(ts, " Requires", keyDepend,
|
||||
requires[i], requiresEVR[i], requireFlags[i], &suggestion);
|
||||
|
@ -1419,33 +1420,29 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
|||
psp->problems = xrealloc(psp->problems, sizeof(*psp->problems) *
|
||||
psp->alloced);
|
||||
}
|
||||
psp->problems[psp->num].byHeader = headerLink(h);
|
||||
psp->problems[psp->num].byName = xstrdup(name);
|
||||
psp->problems[psp->num].byVersion = xstrdup(version);
|
||||
psp->problems[psp->num].byRelease = xstrdup(release);
|
||||
psp->problems[psp->num].needsName = xstrdup(requires[i]);
|
||||
psp->problems[psp->num].needsVersion = xstrdup(requiresEVR[i]);
|
||||
psp->problems[psp->num].needsFlags = requireFlags[i];
|
||||
psp->problems[psp->num].sense = RPMDEP_SENSE_REQUIRES;
|
||||
|
||||
if (suggestion) {
|
||||
int j;
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
{};
|
||||
psp->problems[psp->num].suggestedPackages =
|
||||
xmalloc( (j + 1) * sizeof(void *) );
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
psp->problems[psp->num].suggestedPackages[j]
|
||||
= suggestion[j]->key;
|
||||
psp->problems[psp->num].suggestedPackages[j] = NULL;
|
||||
#ifdef DYING
|
||||
psp->problems[psp->num].suggestedPackage = suggestion[0]->key;
|
||||
#endif
|
||||
} else {
|
||||
psp->problems[psp->num].suggestedPackages = NULL;
|
||||
#ifdef DYING
|
||||
psp->problems[psp->num].suggestedPackage = NULL;
|
||||
#endif
|
||||
{ rpmDependencyConflict pp = psp->problems + psp->num;
|
||||
pp->byHeader = headerLink(h);
|
||||
pp->byName = xstrdup(name);
|
||||
pp->byVersion = xstrdup(version);
|
||||
pp->byRelease = xstrdup(release);
|
||||
pp->needsName = xstrdup(requires[i]);
|
||||
pp->needsVersion = xstrdup(requiresEVR[i]);
|
||||
pp->needsFlags = requireFlags[i];
|
||||
pp->sense = RPMDEP_SENSE_REQUIRES;
|
||||
|
||||
if (suggestion) {
|
||||
int j;
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
{};
|
||||
pp->suggestedPackages =
|
||||
xmalloc( (j + 1) * sizeof(*pp->suggestedPackages) );
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
pp->suggestedPackages[j] = suggestion[j]->key;
|
||||
pp->suggestedPackages[j] = NULL;
|
||||
} else {
|
||||
pp->suggestedPackages = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
psp->num++;
|
||||
|
@ -1502,18 +1499,18 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
|||
psp->problems = xrealloc(psp->problems,
|
||||
sizeof(*psp->problems) * psp->alloced);
|
||||
}
|
||||
psp->problems[psp->num].byHeader = headerLink(h);
|
||||
psp->problems[psp->num].byName = xstrdup(name);
|
||||
psp->problems[psp->num].byVersion = xstrdup(version);
|
||||
psp->problems[psp->num].byRelease = xstrdup(release);
|
||||
psp->problems[psp->num].needsName = xstrdup(conflicts[i]);
|
||||
psp->problems[psp->num].needsVersion = xstrdup(conflictsEVR[i]);
|
||||
psp->problems[psp->num].needsFlags = conflictFlags[i];
|
||||
psp->problems[psp->num].sense = RPMDEP_SENSE_CONFLICTS;
|
||||
psp->problems[psp->num].suggestedPackages = NULL;
|
||||
#ifdef DYING
|
||||
psp->problems[psp->num].suggestedPackage = NULL;
|
||||
#endif
|
||||
|
||||
{ rpmDependencyConflict pp = psp->problems + psp->num;
|
||||
pp->byHeader = headerLink(h);
|
||||
pp->byName = xstrdup(name);
|
||||
pp->byVersion = xstrdup(version);
|
||||
pp->byRelease = xstrdup(release);
|
||||
pp->needsName = xstrdup(conflicts[i]);
|
||||
pp->needsVersion = xstrdup(conflictsEVR[i]);
|
||||
pp->needsFlags = conflictFlags[i];
|
||||
pp->sense = RPMDEP_SENSE_CONFLICTS;
|
||||
pp->suggestedPackages = NULL;
|
||||
}
|
||||
|
||||
psp->num++;
|
||||
break;
|
||||
|
|
13
lib/header.c
13
lib/header.c
|
@ -1618,21 +1618,14 @@ int headerAddEntry(Header h, int_32 tag, int_32 type, const void *p, int_32 c)
|
|||
{
|
||||
struct indexEntry *entry;
|
||||
|
||||
if (c <= 0) {
|
||||
#ifdef DYING
|
||||
fprintf(stderr, _("Bad count for headerAddEntry(): %d\n"), (int) c);
|
||||
exit(EXIT_FAILURE);
|
||||
#else
|
||||
/* Count must always be >= 1 for headerAddEntry. */
|
||||
if (c <= 0)
|
||||
return 0;
|
||||
#endif
|
||||
/*@notreached@*/
|
||||
}
|
||||
|
||||
/* Allocate more index space if necessary */
|
||||
if (h->indexUsed == h->indexAlloced) {
|
||||
h->indexAlloced += INDEX_MALLOC_SIZE;
|
||||
h->index = xrealloc(h->index,
|
||||
h->indexAlloced * sizeof(struct indexEntry));
|
||||
h->index = xrealloc(h->index, h->indexAlloced * sizeof(*h->index));
|
||||
}
|
||||
|
||||
/* Fill in the index */
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmbuild.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "build.h"
|
||||
#include "debug.h"
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "system.h"
|
||||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "system.h"
|
||||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
|
67
lib/poptQV.c
67
lib/poptQV.c
|
@ -7,13 +7,12 @@
|
|||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmbuild.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
struct rpmQVArguments_s rpmQVArgs;
|
||||
int specedit = 0;
|
||||
|
||||
/* ======================================================================== */
|
||||
#define POPT_QUERYFORMAT 1000
|
||||
#define POPT_WHATREQUIRES 1001
|
||||
#define POPT_WHATPROVIDES 1002
|
||||
|
@ -24,9 +23,10 @@ int specedit = 0;
|
|||
|
||||
/* ========== Query/Verify source popt args */
|
||||
static void rpmQVSourceArgCallback( /*@unused@*/ poptContext con,
|
||||
/*@unused@*/ enum poptCallbackReason reason,
|
||||
const struct poptOption * opt, /*@unused@*/ const char * arg,
|
||||
/*@unused@*/ const void * data)
|
||||
/*@unused@*/ enum poptCallbackReason reason,
|
||||
const struct poptOption * opt, /*@unused@*/ const char * arg,
|
||||
/*@unused@*/ const void * data)
|
||||
/*@modifies rpmQVArgs @*/
|
||||
{
|
||||
QVA_t qva = &rpmQVArgs;
|
||||
|
||||
|
@ -62,6 +62,9 @@ static void rpmQVSourceArgCallback( /*@unused@*/ poptContext con,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Common query/verify mode options.
|
||||
*/
|
||||
struct poptOption rpmQVSourcePoptTable[] = {
|
||||
{ NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
|
||||
rpmQVSourceArgCallback, 0, NULL, NULL },
|
||||
|
@ -131,6 +134,9 @@ static void queryArgCallback(/*@unused@*/poptContext con,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Query mode options.
|
||||
*/
|
||||
struct poptOption rpmQueryPoptTable[] = {
|
||||
{ NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
|
||||
queryArgCallback, 0, NULL, NULL },
|
||||
|
@ -157,4 +163,53 @@ struct poptOption rpmQueryPoptTable[] = {
|
|||
POPT_TABLEEND
|
||||
};
|
||||
|
||||
/* ======================================================================== */
|
||||
/**
|
||||
* Verify mode options.
|
||||
*/
|
||||
struct poptOption rpmVerifyPoptTable[] = {
|
||||
#ifdef DYING
|
||||
{ NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
|
||||
verifyArgCallback, 0, NULL, NULL },
|
||||
#endif /* DYING */
|
||||
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
|
||||
NULL, NULL },
|
||||
|
||||
{ "nomd5", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_MD5,
|
||||
N_("don't verify MD5 digest of files"), NULL },
|
||||
{ "nosize", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_SIZE,
|
||||
N_("don't verify size of files"), NULL },
|
||||
{ "nolinkto", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_LINKTO,
|
||||
N_("don't verify symlink path of files"), NULL },
|
||||
{ "nouser", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_USER,
|
||||
N_("don't verify owner of files"), NULL },
|
||||
{ "nogroup", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_GROUP,
|
||||
N_("don't verify group of files"), NULL },
|
||||
{ "nomtime", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_MTIME,
|
||||
N_("don't verify modification time of files"), NULL },
|
||||
{ "nomode", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_MODE,
|
||||
N_("don't verify mode of files"), NULL },
|
||||
{ "nordev", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_RDEV,
|
||||
N_("don't verify mode of files"), NULL },
|
||||
|
||||
{ "nofiles", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_FILES,
|
||||
N_("don't verify files in package"), NULL},
|
||||
{ "nodeps", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_DEPS,
|
||||
N_("don't verify package dependencies"), NULL },
|
||||
{ "noscript", '\0', POPT_BIT_SET,&rpmQVArgs.qva_flags, VERIFY_SCRIPT,
|
||||
N_("don't execute %verifyscript (if any)"), NULL },
|
||||
{ "noscripts", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_SCRIPT,
|
||||
N_("don't execute %verifyscript (if any)"), NULL },
|
||||
{ "nodigest", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
|
||||
&rpmQVArgs.qva_flags, VERIFY_DIGEST,
|
||||
N_("don't verify header SHA1 digest"), NULL },
|
||||
|
||||
POPT_TABLEEND
|
||||
};
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmbuild.h>
|
||||
#include <rpmurl.h>
|
||||
#include "manifest.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
|
77
lib/rpmcli.h
77
lib/rpmcli.h
|
@ -6,6 +6,8 @@
|
|||
*/
|
||||
|
||||
#include <rpmlib.h>
|
||||
#include <rpmurl.h>
|
||||
#include <rpmmacro.h>
|
||||
|
||||
/** \ingroup rpmcli
|
||||
* Should version 3 packages be produced?
|
||||
|
@ -58,45 +60,70 @@ extern struct poptOption rpmBuildPoptTable[];
|
|||
|
||||
/** \ingroup rpmcli
|
||||
* Bit(s) to control rpmQuery() operation, stored in qva_flags.
|
||||
* @todo Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.
|
||||
*/
|
||||
typedef enum rpmQueryFlags_e {
|
||||
QUERY_FOR_DEFAULT = 0,
|
||||
QUERY_FOR_LIST = (1 << 1), /*!< query: from --list */
|
||||
QUERY_FOR_STATE = (1 << 2), /*!< query: from --state */
|
||||
QUERY_FOR_DOCS = (1 << 3), /*!< query: from --docfiles */
|
||||
QUERY_FOR_CONFIG = (1 << 4), /*!< query: from --configfiles */
|
||||
QUERY_FOR_DUMPFILES = (1 << 8), /*!< query: from --dump */
|
||||
QUERY_FOR_DEFAULT = 0, /*!< */
|
||||
/*@-enummemuse@*/
|
||||
QUERY_FILES = (1 << 9), /*!< verify: from --nofiles */
|
||||
QUERY_DEPS = (1 << 10), /*!< verify: from --nodeps */
|
||||
QUERY_SCRIPT = (1 << 11), /*!< verify: from --noscripts */
|
||||
QUERY_MD5 = (1 << 12), /*!< verify: from --nomd5 */
|
||||
QUERY_DIGEST = (1 << 13) /*!< verify: from --nodigest */
|
||||
QUERY_MD5 = (1 << 0), /*!< from --nomd5 */
|
||||
QUERY_SIZE = (1 << 1), /*!< from --nosize */
|
||||
QUERY_LINKTO = (1 << 2), /*!< from --nolink */
|
||||
QUERY_USER = (1 << 3), /*!< from --nouser) */
|
||||
QUERY_GROUP = (1 << 4), /*!< from --nogroup) */
|
||||
QUERY_MTIME = (1 << 5), /*!< from --nomtime) */
|
||||
QUERY_MODE = (1 << 6), /*!< from --nomode) */
|
||||
QUERY_RDEV = (1 << 7), /*!< from --nodev */
|
||||
/* bits 8-15 unused, reserved for rpmVerifyAttrs */
|
||||
QUERY_FILES = (1 << 16), /*!< verify: from --nofiles */
|
||||
QUERY_DEPS = (1 << 17), /*!< verify: from --nodeps */
|
||||
QUERY_SCRIPT = (1 << 18), /*!< verify: from --noscripts */
|
||||
QUERY_DIGEST = (1 << 19), /*!< verify: from --nodigest */
|
||||
/*@=enummemuse@*/
|
||||
/* bits 20-22 unused */
|
||||
QUERY_FOR_LIST = (1 << 23), /*!< query: from --list */
|
||||
QUERY_FOR_STATE = (1 << 24), /*!< query: from --state */
|
||||
QUERY_FOR_DOCS = (1 << 25), /*!< query: from --docfiles */
|
||||
QUERY_FOR_CONFIG = (1 << 26), /*!< query: from --configfiles */
|
||||
QUERY_FOR_DUMPFILES = (1 << 27), /*!< query: from --dump */
|
||||
} rpmQueryFlags;
|
||||
|
||||
/** \ingroup rpmcli
|
||||
* Bit(s) to control rpmVerify() operation, stored in qva_flags.
|
||||
* @todo Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs values?.
|
||||
*/
|
||||
/*@-typeuse@*/
|
||||
typedef enum rpmVerifyFlags_e {
|
||||
/*@-enummemuse@*/
|
||||
VERIFY_FOR_DEFAULT = 0,
|
||||
VERIFY_FOR_LIST = (1 << 1), /*!< query: from --list */
|
||||
VERIFY_FOR_STATE = (1 << 2), /*!< query: from --state */
|
||||
VERIFY_FOR_DOCS = (1 << 3), /*!< query: from --docfiles */
|
||||
VERIFY_FOR_CONFIG = (1 << 4), /*!< query: from --configfiles */
|
||||
VERIFY_FOR_DUMPFILES= (1 << 8), /*!< query: from --dump */
|
||||
VERIFY_DEFAULT = 0, /*!< */
|
||||
/*@=enummemuse@*/
|
||||
VERIFY_FILES = (1 << 9), /*!< verify: from --nofiles */
|
||||
VERIFY_DEPS = (1 << 10), /*!< verify: from --nodeps */
|
||||
VERIFY_SCRIPT = (1 << 11), /*!< verify: from --noscripts */
|
||||
VERIFY_MD5 = (1 << 12), /*!< verify: from --nomd5 */
|
||||
VERIFY_DIGEST = (1 << 13) /*!< verify: from --nodigest */
|
||||
VERIFY_MD5 = (1 << 0), /*!< from --nomd5 */
|
||||
VERIFY_SIZE = (1 << 1), /*!< from --nosize */
|
||||
VERIFY_LINKTO = (1 << 2), /*!< from --nolinkto */
|
||||
VERIFY_USER = (1 << 3), /*!< from --nouser */
|
||||
VERIFY_GROUP = (1 << 4), /*!< from --nogroup */
|
||||
VERIFY_MTIME = (1 << 5), /*!< from --nomtime */
|
||||
VERIFY_MODE = (1 << 6), /*!< from --nomode */
|
||||
VERIFY_RDEV = (1 << 7), /*!< from --nodev */
|
||||
/* bits 8-15 unused, reserved for rpmVerifyAttrs */
|
||||
VERIFY_FILES = (1 << 16), /*!< verify: from --nofiles */
|
||||
VERIFY_DEPS = (1 << 17), /*!< verify: from --nodeps */
|
||||
VERIFY_SCRIPT = (1 << 18), /*!< verify: from --noscripts */
|
||||
VERIFY_DIGEST = (1 << 19), /*!< verify: from --nodigest */
|
||||
/* bits 20-22 unused */
|
||||
/*@-enummemuse@*/
|
||||
VERIFY_FOR_LIST = (1 << 23), /*!< query: from --list */
|
||||
VERIFY_FOR_STATE = (1 << 24), /*!< query: from --state */
|
||||
VERIFY_FOR_DOCS = (1 << 25), /*!< query: from --docfiles */
|
||||
VERIFY_FOR_CONFIG = (1 << 26), /*!< query: from --configfiles */
|
||||
VERIFY_FOR_DUMPFILES= (1 << 27), /*!< query: from --dump */
|
||||
/*@=enummemuse@*/
|
||||
/* bits 28-30 used in rpmVerifyAttrs */
|
||||
} rpmVerifyFlags;
|
||||
|
||||
#define VERIFY_ATTRS \
|
||||
( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
|
||||
VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV )
|
||||
#define VERIFY_ALL \
|
||||
(VERIFY_FILES|VERIFY_DEPS|VERIFY_SCRIPT|VERIFY_MD5|VERIFY_DIGEST)
|
||||
/*@=typeuse@*/
|
||||
( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST )
|
||||
|
||||
/** \ingroup rpmcli
|
||||
* @param qva parsed query/verify options
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#include "system.h"
|
||||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmmacro.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "manifest.h"
|
||||
#include "misc.h"
|
||||
|
|
30
lib/rpmlib.h
30
lib/rpmlib.h
|
@ -808,11 +808,6 @@ int rpmdbSetIteratorModified(/*@null@*/ rpmdbMatchIterator mi, int modified)
|
|||
*/
|
||||
/*@null@*/ Header rpmdbNextIterator(/*@null@*/ rpmdbMatchIterator mi)
|
||||
/*@modifies mi @*/;
|
||||
#define rpmdbNextIterator(_a) \
|
||||
XrpmdbNextIterator(_a, __FILE__, __LINE__)
|
||||
/*@null@*/ Header XrpmdbNextIterator(/*@null@*/ rpmdbMatchIterator mi,
|
||||
const char * f, unsigned int l)
|
||||
/*@modifies mi @*/;
|
||||
|
||||
/** \ingroup rpmdb
|
||||
* Return database iterator.
|
||||
|
@ -1521,17 +1516,22 @@ typedef enum rpmQVSources_e {
|
|||
*/
|
||||
typedef enum rpmVerifyAttrs_e {
|
||||
RPMVERIFY_NONE = 0, /*!< */
|
||||
RPMVERIFY_MD5 = (1 << 0), /*!< */
|
||||
RPMVERIFY_FILESIZE = (1 << 1), /*!< */
|
||||
RPMVERIFY_LINKTO = (1 << 2), /*!< */
|
||||
RPMVERIFY_USER = (1 << 3), /*!< */
|
||||
RPMVERIFY_GROUP = (1 << 4), /*!< */
|
||||
RPMVERIFY_MTIME = (1 << 5), /*!< */
|
||||
RPMVERIFY_MODE = (1 << 6), /*!< */
|
||||
RPMVERIFY_RDEV = (1 << 7), /*!< */
|
||||
RPMVERIFY_MD5 = (1 << 0), /*!< from %verify(md5) */
|
||||
RPMVERIFY_FILESIZE = (1 << 1), /*!< from %verify(size) */
|
||||
RPMVERIFY_LINKTO = (1 << 2), /*!< from %verify(link) */
|
||||
RPMVERIFY_USER = (1 << 3), /*!< from %verify(user) */
|
||||
RPMVERIFY_GROUP = (1 << 4), /*!< from %verify(group) */
|
||||
RPMVERIFY_MTIME = (1 << 5), /*!< from %verify(mtime) */
|
||||
RPMVERIFY_MODE = (1 << 6), /*!< from %verify(mode) */
|
||||
RPMVERIFY_RDEV = (1 << 7), /*!< from %verify(rdev) */
|
||||
/* bits 8-15 unused, reserved for rpmVerifyAttrs */
|
||||
/* bits 16-19 used in rpmVerifyFlags */
|
||||
/* bits 20-22 unused */
|
||||
/* bits 23-27 used in rpmQueryFlags */
|
||||
RPMVERIFY_READLINKFAIL= (1 << 28), /*!< */
|
||||
RPMVERIFY_READFAIL = (1 << 29), /*!< */
|
||||
RPMVERIFY_LSTATFAIL = (1 << 30) /*!< */
|
||||
/* bit 31 unused */
|
||||
} rpmVerifyAttrs;
|
||||
#define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
|
||||
|
||||
|
@ -1602,6 +1602,7 @@ typedef enum rpmEraseInterfaceFlags_e {
|
|||
/** \ingroup signature
|
||||
* Tags found in signature header from package.
|
||||
*/
|
||||
/*@-enummemuse@*/
|
||||
enum rpmtagSignature {
|
||||
RPMSIGTAG_SIZE = 1000, /*!< Size in bytes. */
|
||||
/* the md5 sum was broken *twice* on big endian machines */
|
||||
|
@ -1612,7 +1613,6 @@ enum rpmtagSignature {
|
|||
RPMSIGTAG_GPG = 1005, /*!< GnuPG signature. */
|
||||
RPMSIGTAG_PGP5 = 1006, /*!< PGP5 signature @deprecated legacy. */
|
||||
|
||||
/*@-enummemuse@*/
|
||||
/* Signature tags by Public Key Algorithm (RFC 2440) */
|
||||
/* N.B.: These tags are tenative, the values may change */
|
||||
RPMTAG_PK_BASE = 512, /*!< @todo Implement. */
|
||||
|
@ -1633,8 +1633,8 @@ enum rpmtagSignature {
|
|||
RPMTAG_HASH_MD2 = RPMTAG_HASH_BASE+5, /*!< (unused) */
|
||||
RPMTAG_HASH_TIGER192= RPMTAG_HASH_BASE+6, /*!< (unused) */
|
||||
RPMTAG_HASH_HAVAL_5_160= RPMTAG_HASH_BASE+7 /*!< (unused) */
|
||||
/*@=enummemuse@*/
|
||||
};
|
||||
/*@=enummemuse@*/
|
||||
|
||||
/**
|
||||
* Return codes from verifySignature().
|
||||
|
|
66
lib/verify.c
66
lib/verify.c
|
@ -6,7 +6,6 @@
|
|||
#include "system.h"
|
||||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "psm.h"
|
||||
#include "md5.h"
|
||||
|
@ -28,57 +27,6 @@ static union _vendian {
|
|||
|
||||
#define S_ISDEV(m) (S_ISBLK((m)) || S_ISCHR((m)))
|
||||
|
||||
#ifdef DYING
|
||||
#define POPT_NODEPS 1000
|
||||
#define POPT_NOFILES 1001
|
||||
#define POPT_NOMD5 1002
|
||||
#define POPT_NOSCRIPTS 1003
|
||||
|
||||
/* ========== Verify specific popt args */
|
||||
static void verifyArgCallback(/*@unused@*/poptContext con,
|
||||
/*@unused@*/enum poptCallbackReason reason,
|
||||
const struct poptOption * opt, /*@unused@*/const char * arg,
|
||||
/*@unused@*/ const void * data)
|
||||
/*@*/
|
||||
{
|
||||
QVA_t qva = &rpmQVArgs;
|
||||
switch (opt->val) {
|
||||
case POPT_NODEPS: qva->qva_flags |= VERIFY_DEPS; break;
|
||||
case POPT_NOFILES: qva->qva_flags |= VERIFY_FILES; break;
|
||||
case POPT_NOMD5: qva->qva_flags |= VERIFY_MD5; break;
|
||||
case POPT_NOSCRIPTS: qva->qva_flags |= VERIFY_SCRIPT; break;
|
||||
}
|
||||
}
|
||||
|
||||
static int noDeps = 0;
|
||||
static int noFiles = 0;
|
||||
static int noMd5 = 0;
|
||||
static int noScripts = 0;
|
||||
#endif /* DYING */
|
||||
|
||||
/**
|
||||
* Verify mode options.
|
||||
*/
|
||||
struct poptOption rpmVerifyPoptTable[] = {
|
||||
#ifdef DYING
|
||||
{ NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
|
||||
verifyArgCallback, 0, NULL, NULL },
|
||||
#endif /* DYING */
|
||||
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
|
||||
NULL, NULL },
|
||||
{ "nodeps", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_DEPS,
|
||||
N_("do not verify package dependencies"), NULL },
|
||||
{ "nofiles", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_FILES,
|
||||
N_("don't verify files in package"), NULL},
|
||||
{ "nomd5", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_MD5,
|
||||
N_("do not verify file md5 checksums"), NULL },
|
||||
{ "noscripts", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_SCRIPT,
|
||||
N_("do not execute %verifyscript (if any)"), NULL },
|
||||
{ "nodigest", '\0', POPT_BIT_SET, &rpmQVArgs.qva_flags, VERIFY_DIGEST,
|
||||
N_("do not execute %verifyscript (if any)"), NULL },
|
||||
POPT_TABLEEND
|
||||
};
|
||||
|
||||
int rpmVerifyFile(const char * root, Header h, int filenum,
|
||||
rpmVerifyAttrs * result, rpmVerifyAttrs omitMask)
|
||||
{
|
||||
|
@ -167,7 +115,12 @@ int rpmVerifyFile(const char * root, Header h, int filenum,
|
|||
}
|
||||
}
|
||||
|
||||
if (filespec == NULL || Lstat(filespec, &sb) != 0) {
|
||||
if (filespec == NULL) {
|
||||
*result |= RPMVERIFY_LSTATFAIL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (Lstat(filespec, &sb) != 0) {
|
||||
*result |= RPMVERIFY_LSTATFAIL;
|
||||
return 1;
|
||||
}
|
||||
|
@ -202,7 +155,7 @@ int rpmVerifyFile(const char * root, Header h, int filenum,
|
|||
*/
|
||||
if (fileAttrs & RPMFILE_GHOST) {
|
||||
flags &= ~(RPMVERIFY_MD5 | RPMVERIFY_FILESIZE | RPMVERIFY_MTIME |
|
||||
RPMVERIFY_LINKTO);
|
||||
RPMVERIFY_LINKTO | RPMVERIFY_MODE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -403,7 +356,7 @@ static int verifyDigest(Header h)
|
|||
|
||||
if (digest) { /* XXX can't happen */
|
||||
const char *n, *v, *r;
|
||||
headerNVR(h, &n, &v, &r);
|
||||
(void) headerNVR(h, &n, &v, &r);
|
||||
if (strcmp(hdigest, digest)) {
|
||||
rpmMessage(RPMMESS_NORMAL,
|
||||
_("%s-%s-%s: immutable header region digest check failed\n"),
|
||||
|
@ -436,8 +389,7 @@ static int verifyHeader(QVA_t qva, Header h)
|
|||
int count;
|
||||
int_32 * fileFlags = NULL;
|
||||
rpmVerifyAttrs verifyResult = 0;
|
||||
rpmVerifyAttrs omitMask = !(qva->qva_flags & VERIFY_MD5)
|
||||
? RPMVERIFY_MD5 : RPMVERIFY_NONE;
|
||||
rpmVerifyAttrs omitMask = ((qva->qva_flags & VERIFY_ATTRS) ^ VERIFY_ATTRS);
|
||||
int ec = 0; /* assume no problems */
|
||||
int i;
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "Python.h"
|
||||
#include "rpmcli.h" /* XXX for rpmCheckSig */
|
||||
#include "misc.h"
|
||||
#include "rpmmacro.h"
|
||||
#include "rpmio_internal.h"
|
||||
#include "upgrade.h"
|
||||
|
||||
|
|
1
rpm.c
1
rpm.c
|
@ -2,7 +2,6 @@
|
|||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmbuild.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "build.h"
|
||||
#include "signature.h"
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "system.h"
|
||||
|
||||
#include <rpmcli.h>
|
||||
#include <rpmurl.h>
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
|
|
|
@ -11,8 +11,7 @@ static int _debug = 0;
|
|||
#include <signal.h>
|
||||
#include <sys/signal.h>
|
||||
|
||||
#include <rpmlib.h>
|
||||
#include <rpmmacro.h> /* XXX for rpmGetPath/rpmGenPath */
|
||||
#include <rpmcli.h>
|
||||
|
||||
#include "rpmdb.h"
|
||||
#include "fprint.h"
|
||||
|
@ -28,11 +27,7 @@ static int _debug = 0;
|
|||
extern int _noDirTokens;
|
||||
/*@=redecl@*/
|
||||
static int _rebuildinprogress = 0;
|
||||
static int _db_filter_dups = 1;
|
||||
|
||||
/*@-exportlocal -exportheadervar@*/
|
||||
int _filterDbDups = 0; /* Filter duplicate entries ? (bug in pre rpm-3.0.4) */
|
||||
/*@=exportlocal =exportheadervar@*/
|
||||
static int _db_filter_dups = 0;
|
||||
|
||||
#define _DBI_FLAGS 0
|
||||
#define _DBI_PERMS 0644
|
||||
|
@ -145,29 +140,29 @@ static struct _dbiVec *mydbvecs[] = {
|
|||
};
|
||||
/*@=nullassign@*/
|
||||
|
||||
INLINE int dbiSync(dbiIndex dbi, unsigned int flags) {
|
||||
INLINE int dbiSync(dbiIndex dbi, unsigned int flags)
|
||||
{
|
||||
if (_debug < 0 || dbi->dbi_debug)
|
||||
fprintf(stderr, " Sync %s\n", tagName(dbi->dbi_rpmtag));
|
||||
return (*dbi->dbi_vec->sync) (dbi, flags);
|
||||
}
|
||||
|
||||
INLINE int dbiByteSwapped(dbiIndex dbi) {
|
||||
INLINE int dbiByteSwapped(dbiIndex dbi)
|
||||
{
|
||||
return (*dbi->dbi_vec->byteswapped) (dbi);
|
||||
}
|
||||
|
||||
INLINE int XdbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int flags,
|
||||
const char * f, unsigned int l)
|
||||
INLINE int dbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int flags)
|
||||
{
|
||||
if (_debug < 0 || dbi->dbi_debug)
|
||||
fprintf(stderr, "+++ RMW %s %s (%s:%u)\n", tagName(dbi->dbi_rpmtag), ((flags & DBI_WRITECURSOR) ? "WRITECURSOR" : ""), f, l);
|
||||
fprintf(stderr, "+++ RMW %s %s\n", tagName(dbi->dbi_rpmtag), ((flags & DBI_WRITECURSOR) ? "WRITECURSOR" : ""));
|
||||
return (*dbi->dbi_vec->copen) (dbi, dbcp, flags);
|
||||
}
|
||||
|
||||
INLINE int XdbiCclose(dbiIndex dbi, /*@only@*/ DBC * dbcursor, unsigned int flags,
|
||||
const char * f, unsigned int l)
|
||||
INLINE int dbiCclose(dbiIndex dbi, /*@only@*/DBC * dbcursor, unsigned int flags)
|
||||
{
|
||||
if (_debug < 0 || dbi->dbi_debug)
|
||||
fprintf(stderr, "--- RMW %s (%s:%u)\n", tagName(dbi->dbi_rpmtag), f, l);
|
||||
fprintf(stderr, "--- RMW %s\n", tagName(dbi->dbi_rpmtag));
|
||||
return (*dbi->dbi_vec->cclose) (dbi, dbcursor, flags);
|
||||
}
|
||||
|
||||
|
@ -180,7 +175,8 @@ static int printable(const void * ptr, size_t len) /*@*/
|
|||
return 1;
|
||||
}
|
||||
|
||||
INLINE int dbiDel(dbiIndex dbi, DBC * dbcursor, const void * keyp, size_t keylen, unsigned int flags)
|
||||
INLINE int dbiDel(dbiIndex dbi, DBC * dbcursor,
|
||||
const void * keyp, size_t keylen, unsigned int flags)
|
||||
{
|
||||
int NULkey;
|
||||
int rc;
|
||||
|
@ -239,7 +235,8 @@ if (_debug < 0 || dbi->dbi_debug) {
|
|||
return rc;
|
||||
}
|
||||
|
||||
INLINE int dbiPut(dbiIndex dbi, DBC * dbcursor, const void * keyp, size_t keylen,
|
||||
INLINE int dbiPut(dbiIndex dbi, DBC * dbcursor,
|
||||
const void * keyp, size_t keylen,
|
||||
const void * datap, size_t datalen, unsigned int flags)
|
||||
{
|
||||
int NULkey;
|
||||
|
@ -827,14 +824,14 @@ static /*@only@*/ /*@null@*/
|
|||
rpmdb newRpmdb(/*@kept@*/ /*@null@*/ const char * root,
|
||||
/*@kept@*/ /*@null@*/ const char * home,
|
||||
int mode, int perms, int flags)
|
||||
/*@modifies _filterDbDups @*/
|
||||
/*@modifies _db_filter_dups @*/
|
||||
{
|
||||
rpmdb db = xcalloc(sizeof(*db), 1);
|
||||
const char * epfx = _DB_ERRPFX;
|
||||
static int _initialized = 0;
|
||||
|
||||
if (!_initialized) {
|
||||
_filterDbDups = rpmExpandNumeric("%{_filterdbdups}");
|
||||
_db_filter_dups = rpmExpandNumeric("%{_filterdbdups}");
|
||||
_initialized = 1;
|
||||
}
|
||||
|
||||
|
@ -861,7 +858,7 @@ rpmdb newRpmdb(/*@kept@*/ /*@null@*/ const char * root,
|
|||
db->db_errpfx = rpmExpand( (epfx && *epfx ? epfx : _DB_ERRPFX), NULL);
|
||||
/*@=nullpass@*/
|
||||
db->db_remove_env = 0;
|
||||
db->db_filter_dups = _filterDbDups;
|
||||
db->db_filter_dups = _db_filter_dups;
|
||||
db->db_ndbi = dbiTagsMax;
|
||||
db->_dbi = xcalloc(db->db_ndbi, sizeof(*db->_dbi));
|
||||
/*@-globstate@*/ return db; /*@=globstate@*/
|
||||
|
@ -1492,7 +1489,7 @@ int rpmdbSetIteratorModified(rpmdbMatchIterator mi, int modified) {
|
|||
return rc;
|
||||
}
|
||||
|
||||
Header XrpmdbNextIterator(rpmdbMatchIterator mi, const char * f, unsigned l)
|
||||
Header rpmdbNextIterator(rpmdbMatchIterator mi)
|
||||
{
|
||||
dbiIndex dbi;
|
||||
void * uh = NULL;
|
||||
|
@ -1517,7 +1514,7 @@ Header XrpmdbNextIterator(rpmdbMatchIterator mi, const char * f, unsigned l)
|
|||
* marked with DB_WRITECURSOR as well.
|
||||
*/
|
||||
if (mi->mi_dbc == NULL)
|
||||
xx = XdbiCopen(dbi, &mi->mi_dbc, (mi->mi_cflags | DBI_ITERATOR), f, l);
|
||||
xx = dbiCopen(dbi, &mi->mi_dbc, (mi->mi_cflags | DBI_ITERATOR));
|
||||
dbi->dbi_lastoffset = mi->mi_prevoffset;
|
||||
|
||||
top:
|
||||
|
|
|
@ -31,6 +31,7 @@ struct _dbiIndexItem {
|
|||
unsigned int dbNum; /*!< database index */
|
||||
};
|
||||
|
||||
#ifdef DYING
|
||||
/** \ingroup dbi
|
||||
* A single item in an index database (i.e. the "data saved").
|
||||
*/
|
||||
|
@ -41,6 +42,7 @@ struct _dbiIR {
|
|||
/*@-typeuse@*/
|
||||
typedef struct _dbiIR * DBIR_t;
|
||||
/*@=typeuse@*/
|
||||
#endif /* DYING */
|
||||
|
||||
/** \ingroup dbi
|
||||
* Items retrieved from the index database.
|
||||
|
@ -387,11 +389,6 @@ extern "C" {
|
|||
*/
|
||||
int dbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int dbiflags)
|
||||
/*@modifies dbi, *dbcp @*/;
|
||||
int XdbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int dbiflags,
|
||||
const char *f, unsigned int l)
|
||||
/*@modifies dbi, *dbcp @*/;
|
||||
#define dbiCopen(_a,_b,_c) \
|
||||
XdbiCopen(_a, _b, _c, __FILE__, __LINE__)
|
||||
|
||||
#define DBI_WRITECURSOR (1 << 0)
|
||||
#define DBI_ITERATOR (1 << 1)
|
||||
|
@ -401,12 +398,7 @@ int XdbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int dbiflags,
|
|||
* @param flags (unused)
|
||||
*/
|
||||
int dbiCclose(dbiIndex dbi, /*@only@*/ DBC * dbcursor, unsigned int flags)
|
||||
/*@modifies dbi @*/;
|
||||
int XdbiCclose(dbiIndex dbi, /*@only@*/ DBC * dbcursor, unsigned int flags,
|
||||
const char *f, unsigned int l)
|
||||
/*@modifies dbi, *dbcursor @*/;
|
||||
#define dbiCclose(_a,_b,_c) \
|
||||
XdbiCclose(_a, _b, _c, __FILE__, __LINE__)
|
||||
|
||||
/** \ingroup dbi
|
||||
* Delete (key,data) pair(s) from index database.
|
||||
|
|
Loading…
Reference in New Issue