- add armv3l arch.
- fix: i18n strings need 1 on sucess return code (#41313).
- fix: skip %ghost files when building packages (#38218).
+ - headerFree() returns NULL, _free is C++ safe.
4.0 -> 4.0.[12]
- add doxygen and lclint annotations most everywhere.
spec->packages = newPackage(spec);
/* XXX the header just allocated will be allocated again */
- if (spec->packages->header != NULL) {
- headerFree(spec->packages->header);
- spec->packages->header = NULL;
- }
+ spec->packages->header = headerFree(spec->packages->header);
/* Read the rpm lead and header */
rc = rpmReadPackageInfo(fdi, sigs, &spec->packages->header);
#endif
rc = headerWrite(fd, nh, HEADER_MAGIC_YES);
- headerFree(nh);
+ nh = headerFree(nh);
if (rc) {
rpmError(RPMERR_NOSPACE, _("Unable to write header to %s: %s\n"),
rc = 0;
exit:
- if (sig) {
- rpmFreeSignature(sig);
- sig = NULL;
- }
+ sig = rpmFreeSignature(sig);
if (ifd) {
(void) Fclose(ifd);
ifd = NULL;
p->postUnFile = _free(p->postUnFile);
p->verifyFile = _free(p->verifyFile);
- headerFree(p->header);
- p->header = NULL;
+ p->header = headerFree(p->header);
p->fileList = freeStringBuf(p->fileList);
p->fileFile = _free(p->fileFile);
if (p->cpioList) {
rl = _free(rl);
}
- if (spec->sourceHeader != NULL) {
- headerFree(spec->sourceHeader);
- spec->sourceHeader = NULL;
- }
+ spec->sourceHeader = headerFree(spec->sourceHeader);
if (spec->sourceCpioList) {
TFI_t fi = spec->sourceCpioList;
fi = _free(fi);
}
- headerFree(spec->buildRestrictions);
- spec->buildRestrictions = NULL;
+ spec->buildRestrictions = headerFree(spec->buildRestrictions);
if (!spec->recursing) {
if (spec->BASpecs != NULL)
armv4l*) RPMCANONARCH=armv4l ;;
armv4b*) RPMCANONARCH=armv4b ;;
arm*) RPMCANONARCH=arm ;;
+m68k*) RPMCANONARCH=m68k ;;
*) RPMCANONARCH=unknown ;;
esac
case "${build_os_noversion}" in
\
db3_install: all install_setip \\' > Makefile
+mv db.h db.h.orig
+cat db.h.orig | sed \
+ -e '/^struct __db;/i \
+/*@-incondefs@*/' \
+ -e '/^struct __key_range;/a \
+/*@=incondefs@*/' > db.h
+
# Generate manifest for rpmdb.
make -s listobjs > db3lobjs
p->requires = hfd(p->requires, -1);
p->requiresEVR = hfd(p->requiresEVR, -1);
p->baseNames = hfd(p->baseNames, -1);
- if (p->h) headerFree(p->h);
+ p->h = headerFree(p->h);
if (p->relocs) {
for (r = p->relocs; (r->oldPath || r->newPath); r++) {
int i;
for (i = 0; i < numConflicts; i++) {
- headerFree(conflicts[i].byHeader);
+ conflicts[i].byHeader = headerFree(conflicts[i].byHeader);
conflicts[i].byName = _free(conflicts[i].byName);
conflicts[i].byVersion = _free(conflicts[i].byVersion);
conflicts[i].byRelease = _free(conflicts[i].byRelease);
int ix = -1;
if (fi && fi->fc > 0 && fi->apath && fsmPath && *fsmPath) {
- const char ** p;
+ const char ** p = NULL;
- /*@-nullpass@*/ /* LCL: fi->apath != NULL */
- p = bsearch(&fsmPath, fi->apath, fi->fc, sizeof(fsmPath), cpioStrCmp);
- /*@=nullpass@*/
+ if (fi->apath != NULL)
+ p = bsearch(&fsmPath, fi->apath, fi->fc, sizeof(fsmPath),
+ cpioStrCmp);
if (p == NULL) {
fprintf(stderr, "*** not mapped %s\n", fsmPath);
} else {
fsm->ldnalloc = dnlen + 100;
fsm->ldn = xrealloc(fsm->ldn, fsm->ldnalloc);
}
- /*@-nullpass@*/ /* FIX: fsm->ldn NULL. */
- strcpy(fsm->ldn, fsm->path);
- /*@=nullpass@*/
- fsm->ldnlen = dnlen;
+ if (fsm->ldn != NULL) { /* XXX can't happen */
+ strcpy(fsm->ldn, fsm->path);
+ fsm->ldnlen = dnlen;
+ }
}
dnli = dnlFreeIterator(dnli);
/*@=observertrans =dependenttrans@*/
case FSM_MKNOD:
/*@-unrecog@*/
rc = mknod(fsm->path, (st->st_mode & ~07777), st->st_rdev);
+ /*@=unrecog@*/
if (_fsm_debug && (stage & FSM_SYSCALL))
rpmMessage(RPMMESS_DEBUG, " %8s (%s, 0%o, 0x%x) %s\n", cur,
fsm->path, (unsigned)(st->st_mode & ~07777),
(unsigned)st->st_rdev,
(rc < 0 ? strerror(errno) : ""));
if (rc < 0) rc = CPIOERR_MKNOD_FAILED;
- /*@=unrecog@*/
break;
case FSM_LSTAT:
rc = Lstat(fsm->path, ost);
};
/**
+ * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
+ * @param this memory to free
+ * @return NULL always
+ */
+/*@unused@*/ static inline /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * p) {
+ if (p != NULL) free((void *)p);
+ return NULL;
+}
+
+/**
* Return length of entry data.
* @param type entry data type
* @param p entry data
void headerFreeIterator(HeaderIterator iter)
{
- headerFree(iter->h);
- free(iter);
+ iter->h = headerFree(iter->h);
+ iter = _free(iter);
}
int headerNextIterator(HeaderIterator hi,
return ((rc == 1) ? 1 : 0);
}
+/**
+ */
static int indexCmp(const void *avp, const void *bvp) /*@*/
{
const struct indexEntry * ap = avp, * bp = bvp;
}
}
+/**
+ */
static int offsetCmp(const void *avp, const void *bvp) /*@*/
{
const struct indexEntry * ap = avp, * bp = bvp;
errxit:
/*@-usereleased@*/
if (h) {
- if (h->index) free(h->index);
+ h->index = _free(h->index);
/*@-refcounttrans@*/
- free(h);
+ h = _free(h);
/*@=refcounttrans@*/
- h = NULL;
}
/*@=usereleased@*/
/*@-refcounttrans@*/
h = headerLoad(nuh);
if (h == NULL) {
- free(nuh);
+ nuh = _free(nuh);
return h;
}
h->region_allocated = 1;
}
#endif
+/**
+ */
static /*@only@*/ /*@null@*/ void * doHeaderUnload(Header h,
/*@out@*/ int * lengthPtr)
/*@modifies h, *lengthPtr @*/
errxit:
/*@-usereleased@*/
- if (ei)
- free(ei);
- ei = NULL;
+ ei = _free(ei);
/*@=usereleased@*/
return (void *) ei;
}
if (uh == NULL)
return NULL;
- headerFree(h);
+ h = headerFree(h);
/*@=onlytrans@*/
nh = headerLoad(uh);
if (nh == NULL) {
- free(uh);
+ uh = _free(uh);
return NULL;
}
if (nh->region_allocated)
- free(uh);
+ uh = _free(uh);
nh->region_allocated = 1;
if (ENTRY_IS_REGION(nh->index)) {
if (tag == HEADER_SIGNATURES || tag == HEADER_IMMUTABLE)
nb = Fwrite(uh, sizeof(char), length, fd);
exit:
- free((void *)uh);
+ uh = _free(uh);
return (nb == length ? 0 : 1);
}
exit:
if (h) {
if (h->region_allocated)
- free(ei);
+ ei = _free(ei);
h->region_allocated = 1;
} else if (ei)
- free(ei);
+ ei = _free(ei);
return h;
}
return h;
}
-void headerFree(Header h)
+Header headerFree(Header h)
{
if (h == NULL || --h->nrefs > 0)
- return;
+ return NULL; /* XXX return previous header? */
if (h->index) {
struct indexEntry * entry = h->index;
if (entry->length > 0) {
int_32 * ei = entry->data;
ei -= 2; /* XXX HACK: adjust to beginning of header. */
- free(ei);
+ ei = _free(ei);
}
} else if (!ENTRY_IN_REGION(entry)) {
- free(entry->data);
+ entry->data = _free(entry->data);
}
entry->data = NULL;
}
- free(h->index);
- h->index = NULL;
+ h->index = _free(h->index);
}
- /*@-refcounttrans@*/ free(h); /*@=refcounttrans@*/
+ /*@-refcounttrans@*/ h = _free(h); /*@=refcounttrans@*/
+ return h;
}
Header headerLink(Header h)
return size;
}
+/**
+ */
static void copyData(int_32 type, /*@out@*/ void * dstPtr, const void * srcPtr,
int_32 c, int dataLength)
/*@modifies *dstPtr @*/
if (ENTRY_IN_REGION(entry)) {
entry->info.offset = 0;
} else
- free(entry->data);
+ entry->data = _free(entry->data);
/*@-dependenttrans@*/
entry->data = buf;
/*@=dependenttrans@*/
if (ENTRY_IN_REGION(entry)) {
entry->info.offset = 0;
} else
- free(oldData);
+ oldData = _free(oldData);
return 1;
}
first->length = 0;
if (ENTRY_IN_REGION(first))
continue;
- free(data);
+ data = _free(data);
}
ne = (first - entry);
return 0;
}
+/**
+ */
static char escapedChar(const char ch) /*@*/
{
switch (ch) {
}
}
-static
-void freeFormat( /*@only@*/ /*@null@*/ struct sprintfToken * format, int num)
+/**
+ */
+static /*@null@*/ struct sprintfToken *
+freeFormat( /*@only@*/ /*@null@*/ struct sprintfToken * format, int num)
{
int i;
- if (format == NULL) return;
+ if (format == NULL) return NULL;
for (i = 0; i < num; i++) {
switch (format[i].type) {
case PTOK_ARRAY:
- freeFormat(format[i].u.array.format, format[i].u.array.numTokens);
+ format[i].u.array.format =
+ freeFormat(format[i].u.array.format,
+ format[i].u.array.numTokens);
break;
case PTOK_COND:
- freeFormat(format[i].u.cond.ifFormat,
+ format[i].u.cond.ifFormat =
+ freeFormat(format[i].u.cond.ifFormat,
format[i].u.cond.numIfTokens);
- freeFormat(format[i].u.cond.elseFormat,
+ format[i].u.cond.elseFormat =
+ freeFormat(format[i].u.cond.elseFormat,
format[i].u.cond.numElseTokens);
break;
case PTOK_NONE:
break;
}
}
- free(format);
+ format = _free(format);
+ return NULL;
}
+/**
+ */
static void findTag(char * name, const struct headerTagTableEntry * tags,
const struct headerSprintfExtension * extensions,
/*@out@*/const struct headerTagTableEntry ** tagMatch,
/*@out@*/char ** endPtr, /*@null@*/ /*@out@*/ errmsg_t * errmsg)
/*@modifies str, *str, *token, *endPtr, *errmsg @*/;
+/**
+ */
static int parseFormat(char * str, const struct headerTagTableEntry * tags,
const struct headerSprintfExtension * extensions,
/*@out@*/struct sprintfToken ** formatPtr, /*@out@*/int * numTokensPtr,
start++;
if (parseExpression(format + currToken, start, tags,
extensions, &newEnd, errmsg)) {
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
start = newEnd;
/*@-observertrans@*/
if (errmsg) *errmsg = _("missing { after %");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("missing } after %{");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
*next++ = '\0';
/*@-observertrans@*/
if (errmsg) *errmsg = _("empty tag format");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
format[currToken].u.tag.type = chptr;
/*@-observertrans@*/
if (errmsg) *errmsg = _("empty tag name");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("unknown tag");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
&format[currToken].u.array.format,
&format[currToken].u.array.numTokens,
&start, PARSER_IN_ARRAY, errmsg)) {
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("] expected at end of array");
/*@=observertrans@*/
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
if (errmsg) *errmsg = _("unexpected }");
/*@=observertrans@*/
}
- freeFormat(format, numTokens);
+ format = freeFormat(format, numTokens);
return 1;
}
*start++ = '\0';
return 0;
}
+/**
+ */
static int parseExpression(struct sprintfToken * token, char * str,
const struct headerTagTableEntry * tags,
const struct headerSprintfExtension * extensions,
/*@-observertrans@*/
if (errmsg) *errmsg = _("} expected in expression");
/*@=observertrans@*/
- freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
- token->u.cond.ifFormat = NULL;
+ token->u.cond.ifFormat =
+ freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _(": expected following ? subexpression");
/*@=observertrans@*/
- freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
- token->u.cond.ifFormat = NULL;
+ token->u.cond.ifFormat =
+ freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("{ expected after : in expression");
/*@=observertrans@*/
- freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
- token->u.cond.ifFormat = NULL;
+ token->u.cond.ifFormat =
+ freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("} expected in expression");
/*@=observertrans@*/
- freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
- token->u.cond.ifFormat = NULL;
+ token->u.cond.ifFormat =
+ freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
return 1;
}
/*@-observertrans@*/
if (errmsg) *errmsg = _("| expected at end of expression");
/*@=observertrans@*/
- freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
- token->u.cond.ifFormat = NULL;
- freeFormat(token->u.cond.elseFormat, token->u.cond.numElseTokens);
- token->u.cond.elseFormat = NULL;
+ token->u.cond.ifFormat =
+ freeFormat(token->u.cond.ifFormat, token->u.cond.numIfTokens);
+ token->u.cond.elseFormat =
+ freeFormat(token->u.cond.elseFormat, token->u.cond.numElseTokens);
return 1;
}
}
return 0;
}
+/**
+ */
static int getExtension(Header h, headerTagTagFunction fn,
/*@out@*/ int_32 * typeptr, /*@out@*/ const void ** data,
/*@out@*/ int_32 * countptr, struct extensionCache * ext)
return 0;
}
+/**
+ */
static char * formatValue(struct sprintfTag * tag, Header h,
const struct headerSprintfExtension * extensions,
struct extensionCache * extCache, int element)
}
/*@-observertrans -modobserver@*/
- if (mayfree) free((void *)data);
+ if (mayfree) data = _free(data);
/*@=observertrans =modobserver@*/
break;
return val;
}
+/**
+ */
static const char * singleSprintf(Header h, struct sprintfToken * token,
const struct headerSprintfExtension * extensions,
struct extensionCache * extCache, int element)
}
strcat(val, thisItem);
len += thisItemLen;
- free((void *)thisItem);
+ thisItem = _free(thisItem);
}
break;
}
strcat(val, thisItem);
len += thisItemLen;
- free((void *)thisItem);
+ thisItem = _free(thisItem);
}
}
}
return val;
}
+/**
+ */
static struct extensionCache * allocateExtensionCache(
const struct headerSprintfExtension * extensions)
/*@*/
return xcalloc(i, sizeof(struct extensionCache));
}
+/**
+ */
static void freeExtensionCache(const struct headerSprintfExtension * extensions,
/*@only@*/struct extensionCache * cache)
{
int i = 0;
while (ext->type != HEADER_EXT_LAST) {
- if (cache[i].freeit) free((void *)cache[i].data);
+ if (cache[i].freeit) cache[i].data = _free(cache[i].data);
i++;
if (ext->type == HEADER_EXT_MORE)
ext++;
}
- free(cache);
+ cache = _free(cache);
}
char * headerSprintf(Header h, const char * origFmt,
if (parseFormat(fmtString, tags, extensions, &format, &numTokens,
NULL, PARSER_BEGIN, errmsg)) {
- free(fmtString);
+ fmtString = _free(fmtString);
return NULL;
}
strcat(answer, piece);
answerLength += pieceLength;
- free((void *)piece);
+ piece = _free(piece);
}
}
- free(fmtString);
+ fmtString = _free(fmtString);
freeExtensionCache(extensions, extCache);
- free(format);
+ format = _free(format);
return answer;
}
+/**
+ */
static char * octalFormat(int_32 type, const void * data,
char * formatPrefix, int padding, /*@unused@*/int element)
/*@modifies formatPrefix @*/
return val;
}
+/**
+ */
static char * hexFormat(int_32 type, const void * data,
char * formatPrefix, int padding, /*@unused@*/int element)
/*@modifies formatPrefix @*/
return val;
}
+/**
+ */
static char * realDateFormat(int_32 type, const void * data,
char * formatPrefix, int padding, /*@unused@*/int element,
const char * strftimeFormat)
return val;
}
+/**
+ */
static char * dateFormat(int_32 type, const void * data,
char * formatPrefix, int padding, int element)
/*@modifies formatPrefix @*/
return realDateFormat(type, data, formatPrefix, padding, element, "%c");
}
+/**
+ */
static char * dayFormat(int_32 type, const void * data,
char * formatPrefix, int padding, int element)
/*@modifies formatPrefix @*/
"%a %b %d %Y");
}
+/**
+ */
static char * shescapeFormat(int_32 type, const void * data,
char * formatPrefix, int padding, /*@unused@*/int element)
/*@modifies formatPrefix @*/
/** \ingroup header
* Dereference a header instance.
* @param h header
+ * @return NULL always
*/
-void headerFree( /*@null@*/ /*@killref@*/ Header h);
+/*@null@*/ Header headerFree( /*@null@*/ /*@killref@*/ Header h);
/** \ingroup header
* Return header reference count.
? HEADER_MAGIC_YES : HEADER_MAGIC_NO);
if (*hdr == NULL) {
if (sigs != NULL)
- headerFree(*sigs);
+ *sigs = rpmFreeSignature(*sigs);
return RPMRC_FAIL;
}
}
if (hdrPtr == NULL)
- headerFree(*hdr);
+ *hdr = headerFree(*hdr);
return RPMRC_OK;
}
if (hdrp && *hdrp && sig) {
headerMergeLegacySigs(*hdrp, sig);
- headerFree(sig);
+ sig = rpmFreeSignature(sig);
}
if (isSource) *isSource = lead.type == RPMLEAD_SOURCE;
fi->fstates = xcalloc(1, fi->fc * sizeof(*fi->fstates));
fi->dil = memcpy(xmalloc(fi->fc * sizeof(*fi->dil)),
fi->dil, fi->fc * sizeof(*fi->dil));
- headerFree(fi->h);
- fi->h = NULL;
+ fi->h = headerFree(fi->h);
break;
}
fi->dperms = 0755;
fi->fperms = 0644;
+ /*@-nullstate@*/ /* FIX: fi->h is NULL for TR_REMOVED */
return;
+ /*@=nullstate@*/
}
void freeFi(TFI_t fi)
fi->dil = hfd(fi->dil, -1);
break;
}
- if (fi->h) {
- headerFree(fi->h); fi->h = NULL;
- }
+
+ fi->h = headerFree(fi->h);
/*@-nullstate@*/
return;
return RPMRC_OK;
}
-/*@-compmempass@*/
rpmRC rpmInstallSourcePackage(const char * rootDir, FD_t fd,
const char ** specFilePtr,
rpmCallbackFunction notify, rpmCallbackData notifyData,
loadFi(h, fi);
hge = fi->hge;
hfd = (fi->hfd ? fi->hfd : headerFreeData);
- headerFree(h); /* XXX reference held by transaction set */
- h = NULL;
+ h = headerFree(h); /* XXX reference held by transaction set */
(void) rpmInstallLoadMacros(fi, fi->h);
if (cookie) {
*cookie = NULL;
- if (hge(h, RPMTAG_COOKIE, NULL, (void **) cookie, NULL))
+ if (hge(fi->h, RPMTAG_COOKIE, NULL, (void **) cookie, NULL))
*cookie = xstrdup(*cookie);
}
psm->goal = PSM_PKGINSTALL;
+ /*@-compmempass@*/ /* FIX: psm->fi->dnl should be owned. */
rc = psmStage(psm, PSM_PROCESS);
(void) psmStage(psm, PSM_FINI);
+ /*@=compmempass@*/
if (rc) rc = RPMRC_FAIL;
_specdir = _free(_specdir);
_sourcedir = _free(_sourcedir);
- if (h)
- headerFree(h);
+ h = headerFree(h);
if (fi) {
freeFi(fi);
return rc;
}
-/*@=compmempass@*/
static char * SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin";
int i;
int skip;
- if (!hge(triggeredH, RPMTAG_TRIGGERNAME, &tnt,
- (void **) &triggerNames, &numTriggers))
+ if (!( hge(triggeredH, RPMTAG_TRIGGERNAME, &tnt,
+ (void **) &triggerNames, &numTriggers) &&
+ hge(triggeredH, RPMTAG_TRIGGERFLAGS, &tft,
+ (void **) &triggerFlags, NULL) &&
+ hge(triggeredH, RPMTAG_TRIGGERVERSION, &tvt,
+ (void **) &triggerEVR, NULL))
+ )
return 0;
(void) headerNVR(sourceH, &sourceName, NULL, NULL);
- (void) hge(triggeredH, RPMTAG_TRIGGERFLAGS, &tft, (void **) &triggerFlags, NULL);
- (void) hge(triggeredH, RPMTAG_TRIGGERVERSION, &tvt, (void **) &triggerEVR, NULL);
-
for (i = 0; i < numTriggers; i++) {
int_32 tit, tst, tpt;
triggerEVR[i] + skip, triggerFlags[i]))
continue;
- (void) hge(triggeredH, RPMTAG_TRIGGERINDEX, &tit,
- (void **) &triggerIndices, NULL);
- (void) hge(triggeredH, RPMTAG_TRIGGERSCRIPTS, &tst,
- (void **) &triggerScripts, NULL);
- (void) hge(triggeredH, RPMTAG_TRIGGERSCRIPTPROG, &tpt,
- (void **) &triggerProgs, NULL);
+ if (!( hge(triggeredH, RPMTAG_TRIGGERINDEX, &tit,
+ (void **) &triggerIndices, NULL) &&
+ hge(triggeredH, RPMTAG_TRIGGERSCRIPTS, &tst,
+ (void **) &triggerScripts, NULL) &&
+ hge(triggeredH, RPMTAG_TRIGGERSCRIPTPROG, &tpt,
+ (void **) &triggerProgs, NULL))
+ )
+ continue;
(void) headerNVR(triggeredH, &triggerPackageName, NULL, NULL);
unsigned char * triggersRun;
rpmRC rc = RPMRC_OK;
- if (!hge(fi->h, RPMTAG_TRIGGERNAME, &tnt,
- (void **) &triggerNames, &numTriggers))
+ if (!( hge(fi->h, RPMTAG_TRIGGERNAME, &tnt,
+ (void **) &triggerNames, &numTriggers) &&
+ hge(fi->h, RPMTAG_TRIGGERINDEX, &tit,
+ (void **) &triggerIndices, &numTriggerIndices))
+ )
return 0;
- (void) hge(fi->h, RPMTAG_TRIGGERINDEX, &tit, (void **) &triggerIndices,
- &numTriggerIndices);
triggersRun = alloca(sizeof(*triggersRun) * numTriggerIndices);
memset(triggersRun, 0, sizeof(*triggersRun) * numTriggerIndices);
/* Write the signature section into the package. */
{ Header sig = headerRegenSigHeader(fi->h);
rc = rpmWriteSignature(psm->fd, sig);
- headerFree(sig);
+ sig = rpmFreeSignature(sig);
if (rc) break;
}
if (psm->goal == PSM_PKGINSTALL) {
int_32 installTime = time(NULL);
- if (fi->fc > 0 && fi->fstates)
- /*@-nullpass@*/ /* LCL: fi->fstates != NULL */
+ if (fi->fstates != NULL && fi->fc > 0)
(void) headerAddEntry(fi->h, RPMTAG_FILESTATES, RPM_CHAR_TYPE,
fi->fstates, fi->fc);
- /*@=nullpass@*/
(void) headerAddEntry(fi->h, RPMTAG_INSTALLTIME, RPM_INT32_TYPE,
&installTime, 1);
if (ts->transFlags & RPMTRANS_FLAG_MULTILIB) {
uint_32 multiLib, * newMultiLib, * p;
- if (hge(fi->h, RPMTAG_MULTILIBS, NULL, (void **) &newMultiLib, NULL) &&
- hge(psm->oh, RPMTAG_MULTILIBS, NULL, (void **) &p, NULL))
+ if (hge(fi->h, RPMTAG_MULTILIBS, NULL,
+ (void **) &newMultiLib, NULL) &&
+ hge(psm->oh, RPMTAG_MULTILIBS, NULL,
+ (void **) &p, NULL))
{
multiLib = *p;
multiLib |= *newMultiLib;
(psm->pkgURL ? psm->pkgURL : "???"));
}
- if (fi->h && (psm->goal == PSM_PKGERASE || psm->goal == PSM_PKGSAVE)) {
- headerFree(fi->h);
- fi->h = NULL;
- }
- if (psm->oh) {
- headerFree(psm->oh);
- psm->oh = NULL;
- }
+ if (fi->h && (psm->goal == PSM_PKGERASE || psm->goal == PSM_PKGSAVE))
+ fi->h = headerFree(fi->h);
+ psm->oh = headerFree(psm->oh);
psm->pkgURL = _free(psm->pkgURL);
psm->rpmio_flags = _free(psm->rpmio_flags);
psm->failedFile = _free(psm->failedFile);
/*@dependent@*/ struct availablePackage * ap;
/*@owned@*/ struct sharedFileInfo * replaced;
/*@owned@*/ uint_32 * replacedSizes;
+
/* for TR_REMOVED packages */
unsigned int record;
};
/* Query a package file. */
if (rpmrc == RPMRC_OK) {
retcode = showPackage(qva, rpmdb, h);
- headerFree(h);
+ h = headerFree(h);
continue;
}
/* Generate the new signatures */
if (add != RESIGN_ADD_SIGNATURE) {
- rpmFreeSignature(sig);
+ sig = rpmFreeSignature(sig);
sig = rpmNewSignature();
(void) rpmAddSignature(sig, sigtarget, RPMSIGTAG_SIZE, passPhrase);
(void) rpmAddSignature(sig, sigtarget, RPMSIGTAG_MD5, passPhrase);
if (fd) (void) manageFile(&fd, NULL, 0, res);
if (ofd) (void) manageFile(&ofd, NULL, 0, res);
- if (sig) {
- rpmFreeSignature(sig);
- sig = NULL;
- }
+ sig = rpmFreeSignature(sig);
+
if (sigtarget) {
(void) unlink(sigtarget);
sigtarget = _free(sigtarget);
}
mi = rpmdbFreeIterator(mi);
if (count == 0) {
- headerFree(h);
+ h = headerFree(h);
continue;
}
/* Package is newer than those currently installed. */
rc = rpmtransAddPackage(ts, h, NULL, fileName,
(interfaceFlags & INSTALL_UPGRADE) != 0,
relocations);
- headerFree(h); /* XXX reference held by transaction set */
+ h = headerFree(h); /* XXX reference held by transaction set */
if (defaultReloc)
defaultReloc->oldPath = _free(defaultReloc->oldPath);
/**
* Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
* @param this memory to free
- * @retval NULL always
+ * @return NULL always
*/
-/*@unused@*/ static inline /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * this) {
- if (this != NULL) free((void *)this);
+/*@unused@*/ static inline /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * p) {
+ if (p != NULL) free((void *)p);
return NULL;
}
/** \ingroup signature
* Destroy signature header from package.
+ * @param h signature header
+ * @return NULL always
*/
-void rpmFreeSignature(Header h);
+/*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header h);
/* --- checksig/resign */
*headerp = h;
/*@=nullderef@*/
else if (h)
- headerFree(h);
+ h = headerFree(h);
return rc;
}
return h;
}
-void rpmFreeSignature(Header h)
+Header rpmFreeSignature(Header h)
{
- headerFree(h);
+ return headerFree(h);
}
static int makePGPSignature(const char * file, /*@out@*/ void ** sig,
/**
* Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
* @param this memory to free
- * @retval NULL always
+ * @return NULL always
*/
-/*@unused@*/ static inline /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * this) {
- if (this != NULL) free((void *)this);
+/*@unused@*/ static inline /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * p) {
+ if (p != NULL) free((void *)p);
return NULL;
}
for (i = 0; i < probs->numProblems; i++) {
rpmProblem p = probs->probs + i;
- if (p->h) headerFree(p->h);
+ p->h = headerFree(p->h);
p->pkgNEVR = _free(p->pkgNEVR);
p->altNEVR = _free(p->altNEVR);
p->str1 = _free(p->str1);
/**
* Destroy transaction element iterator.
* @param this transaction element iterator
- * @retval NULL always
+ * @return NULL always
*/
static /*@null@*/ void * tsFreeIterator(/*@only@*//*@null@*/ const void * this)
{
- return _free((void *)this);
+ return _free(this);
}
/**
* If unfiltered problems exist, free memory and return.
*/
if ((ts->transFlags & RPMTRANS_FLAG_BUILD_PROBS) ||
- (ts->probs->numProblems && (!okProbs || psTrim(okProbs, ts->probs)))) {
+ (ts->probs->numProblems && (!okProbs || psTrim(okProbs, ts->probs))))
+ {
*newProbs = ts->probs;
for (alp = ts->addedPackages.list, fi = ts->flList;
- (alp - ts->addedPackages.list) < ts->addedPackages.size;
- alp++, fi++) {
- headerFree(hdrs[alp - ts->addedPackages.list]);
+ (alp - ts->addedPackages.list) < ts->addedPackages.size;
+ alp++, fi++)
+ {
+ hdrs[alp - ts->addedPackages.list] =
+ headerFree(hdrs[alp - ts->addedPackages.list]);
}
ts->flList = freeFl(ts, ts->flList);
Header h;
rpmRC rpmrc;
- headerFree(hdrs[i]);
- hdrs[i] = NULL;
+ hdrs[i] = headerFree(hdrs[i]);
rpmrc = rpmReadPackageHeader(alp->fd, &h, NULL, NULL, NULL);
if (!(rpmrc == RPMRC_OK || rpmrc == RPMRC_BADSIZE)) {
(void)ts->notify(fi->h, RPMCALLBACK_INST_CLOSE_FILE,
ourrc++;
} else {
hdrs[i] = relocateFileList(ts, fi, alp, h, NULL);
- headerFree(h);
+ h = headerFree(h);
}
if (alp->fd) gotfd = 1;
}
if (fi->h) {
hsave = headerLink(fi->h);
- headerFree(fi->h);
+ fi->h = headerFree(fi->h);
}
fi->h = headerLink(hdrs[i]);
if (alp->multiLib)
ourrc++;
lastFailed = i;
}
- headerFree(fi->h);
- fi->h = NULL;
+ fi->h = headerFree(fi->h);
if (hsave) {
fi->h = headerLink(hsave);
- headerFree(hsave);
+ hsave = headerFree(hsave);
}
} else {
ourrc++;
lastFailed = i;
}
- headerFree(hdrs[i]);
+ hdrs[i] = headerFree(hdrs[i]);
if (gotfd) {
(void)ts->notify(fi->h, RPMCALLBACK_INST_CLOSE_FILE, 0, 0,
baseNames = hfd(baseNames, bnt);
dirNames = hfd(dirNames, dnt);
- headerFree(h);
+ h = headerFree(h);
}
rec = _free(rec);
} else
(*matches)->recs[i].hdrNum = 0;
- headerFree(h);
+ h = headerFree(h);
}
if (gotMatches) {
if (dbi && mi->mi_dbc && mi->mi_modified && mi->mi_prevoffset) {
xx = dbiUpdateRecord(dbi, mi->mi_dbc, mi->mi_prevoffset, mi->mi_h);
}
- headerFree(mi->mi_h);
- mi->mi_h = NULL;
+ mi->mi_h = headerFree(mi->mi_h);
}
if (dbi) {
if (dbi->dbi_rmw)
if (mi->mi_h) {
if (mi->mi_modified && mi->mi_prevoffset)
(void)dbiUpdateRecord(dbi, mi->mi_dbc, mi->mi_prevoffset, mi->mi_h);
- headerFree(mi->mi_h);
- mi->mi_h = NULL;
+ mi->mi_h = headerFree(mi->mi_h);
}
/* Is this the end of the iteration? */
unblockSignals(rpmdb, &signalMask);
- headerFree(h);
+ h = headerFree(h);
return 0;
}
{ Header nh = (headerIsEntry(h, RPMTAG_HEADERIMAGE)
? headerCopy(h) : NULL);
rc = rpmdbAdd(newdb, -1, (nh ? nh : h));
- if (nh)
- headerFree(nh);
+ nh = headerFree(nh);
}
if (rc) {