From 550e8442c388cf08322c4e52823ec7d8fe31b5aa Mon Sep 17 00:00:00 2001 From: ewt Date: Fri, 6 Dec 1996 04:07:28 +0000 Subject: [PATCH] plugged memory leaks in upgrade CVS patchset: 1210 CVS date: 1996/12/06 04:07:28 --- lib/install.c | 9 ++++++++- lib/rpmdb.c | 7 +++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/install.c b/lib/install.c index f16b34b..62ac75c 100644 --- a/lib/install.c +++ b/lib/install.c @@ -270,8 +270,11 @@ int rpmInstallPackage(char * rootdir, rpmdb db, int fd, char * location, if (matches.recs[i].recOffset != otherOffset) { if (!(flags & RPMINSTALL_UPGRADETOOLD)) if (rpmEnsureOlder(db, name, version, release, - matches.recs[i].recOffset)) + matches.recs[i].recOffset)) { + headerFree(h); + dbiFreeIndexRecord(matches); return 2; + } *intptr++ = matches.recs[i].recOffset; } } @@ -279,6 +282,8 @@ int rpmInstallPackage(char * rootdir, rpmdb db, int fd, char * location, } } + dbiFreeIndexRecord(matches); + fileList = NULL; if (headerGetEntry(h, RPMTAG_FILENAMES, &type, (void **) &fileList, &fileCount)) { @@ -826,6 +831,8 @@ static int packageAlreadyInstalled(rpmdb db, char * name, char * version, headerFree(sech); } + + dbiFreeIndexRecord(matches); } return 0; diff --git a/lib/rpmdb.c b/lib/rpmdb.c index de9bfe5..187ff60 100644 --- a/lib/rpmdb.c +++ b/lib/rpmdb.c @@ -514,6 +514,7 @@ int rpmdbAdd(rpmdb db, Header dbentry) { int rpmdbUpdateRecord(rpmdb db, int offset, Header newHeader) { Header oldHeader; + int oldSize; oldHeader = rpmdbGetRecord(db, offset); if (!oldHeader) { @@ -522,8 +523,10 @@ int rpmdbUpdateRecord(rpmdb db, int offset, Header newHeader) { return 1; } - if (headerSizeof(oldHeader, HEADER_MAGIC_NO) != - headerSizeof(newHeader, HEADER_MAGIC_NO)) { + oldSize = headerSizeof(oldHeader, HEADER_MAGIC_NO); + headerFree(oldHeader); + + if (oldSize != headerSizeof(newHeader, HEADER_MAGIC_NO)) { rpmMessage(RPMMESS_DEBUG, "header changed size!"); if (rpmdbRemove(db, offset, 1)) return 1; -- 2.7.4