RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 05-Jun-2008 16:42:09 Branch: rpm-5_0 Handle: 2008060514420801 Modified files: (Branch: rpm-5_0) rpm CHANGES rpm/rpmdb librpmdb.vers rpmdb.c rpmdb.h Log: - fix: is_selinux_enbled() > 0 is the correct test. - rpm.org: Mask signals while moving rebuilt rpmdb into place. - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149) - debuginfo: add general rpmdbCount() to get number of items for any tag index, not just RPMTAG_NAME as was in rpmdbCountPackages(). Summary: Revision Changes Path 1.2054.2.81 +5 -0 rpm/CHANGES 1.41.2.3 +3 -1 rpm/rpmdb/librpmdb.vers 1.233.2.3 +31 -6 rpm/rpmdb/rpmdb.c 1.72.2.2 +14 -1 rpm/rpmdb/rpmdb.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.2054.2.80 -r1.2054.2.81 CHANGES --- rpm/CHANGES 5 Jun 2008 13:34:58 -0000 1.2054.2.80 +++ rpm/CHANGES 5 Jun 2008 14:42:08 -0000 1.2054.2.81 @@ -1,6 +1,11 @@ 5.0.3 -> 5.0.4: + - jbj: fix: is_selinux_enbled() > 0 is the correct test. + - rpm.org: Mask signals while moving rebuilt rpmdb into place. + - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149) - jbj: debuginfo: refactor 2 existing upgrade policy rules before adding a new contextually sensitive rule for -debuginfo packages. + - jbj: debuginfo: add general rpmdbCount() to get number of items for + any tag index, not just RPMTAG_NAME as was in rpmdbCountPackages(). - jbj: install rpmmtree.8, update POTFILES.in & Doxyfiles.in. - jbj: add %_build_iconsize macro to permit configuration. - jbj: trash-and-restore macro config for multiple CLI arg builds. @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/librpmdb.vers ============================================================================ $ cvs diff -u -r1.41.2.2 -r1.41.2.3 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 29 May 2008 14:04:37 -0000 1.41.2.2 +++ rpm/rpmdb/librpmdb.vers 5 Jun 2008 14:42:09 -0000 1.41.2.3 @@ -40,6 +40,7 @@ headerGetDigest; headerSetDigest; headerGetInstance; + headerSetInstance; headerGetMagic; headerGetOrigin; headerSetOrigin; @@ -71,7 +72,7 @@ headerVerifyInfo; hGetColor; _init; - _use_xar; + _pkgio_debug; prDbiOpenFlags; rdbOptions; rpmAddSignature; @@ -85,6 +86,7 @@ rpmdbClose; rpmdbBlockDBI; rpmdbCloseDBI; + rpmdbCount; rpmdbCountPackages; rpmdbFindFpList; rpmdbFreeIterator; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.c ============================================================================ $ cvs diff -u -r1.233.2.2 -r1.233.2.3 rpmdb.c --- rpm/rpmdb/rpmdb.c 18 May 2008 15:28:20 -0000 1.233.2.2 +++ rpm/rpmdb/rpmdb.c 5 Jun 2008 14:42:09 -0000 1.233.2.3 @@ -1568,8 +1568,7 @@ return 0; } -/* XXX python/upgrade.c, install.c, uninstall.c */ -int rpmdbCountPackages(rpmdb db, const char * name) +int rpmdbCount(rpmdb db, rpmTag tag, const void * keyp, size_t keylen) { DBC * dbcursor = NULL; DBT * key = alloca(sizeof(*key)); @@ -1578,20 +1577,23 @@ int rc; int xx; - if (db == NULL) + if (db == NULL || keyp == NULL) return 0; memset(key, 0, sizeof(*key)); memset(data, 0, sizeof(*data)); - dbi = dbiOpen(db, RPMTAG_NAME, 0); + dbi = dbiOpen(db, tag, 0); if (dbi == NULL) return 0; + if (keylen == 0) + keylen = strlen(keyp); + /[EMAIL PROTECTED]@*/ -key->data = (void *) name; +key->data = (void *) keyp; /[EMAIL PROTECTED]@*/ -key->size = (u_int32_t) strlen(name); +key->size = (u_int32_t) keylen; xx = dbiCopen(dbi, dbi->dbi_txnid, &dbcursor, 0); rc = dbiGet(dbi, dbcursor, key, data, DB_SET); @@ -1628,6 +1630,12 @@ return rc; } +/* XXX python/upgrade.c, install.c, uninstall.c */ +int rpmdbCountPackages(rpmdb db, const char * name) +{ + return rpmdbCount(db, RPMTAG_NAME, name, 0); +} + /** * Attempt partial matches on name[-version[-release]] strings. * @param dbi index database handle (always RPMTAG_NAME) @@ -3805,7 +3813,10 @@ const char * ofn, * nfn; int rc = 0; int xx; + int selinux = is_selinux_enabled() > 0 && (matchpathcon_init(NULL) != -1); + sigset_t sigMask; + blockSignals(NULL, &sigMask); switch (_olddbapi) { default: case 4: @@ -3855,6 +3866,8 @@ rc = 1; goto bottom; } + + /* Restore uid/gid/mode/mtime/security context if possible. */ xx = Chown(nfn, nst->st_uid, nst->st_gid); xx = Chmod(nfn, (nst->st_mode & 07777)); { struct utimbuf stamp; @@ -3862,6 +3875,14 @@ stamp.modtime = nst->st_mtime; xx = Utime(nfn, &stamp); } + if (selinux) { + security_context_t scon = NULL; + if (matchpathcon(nfn, nst->st_mode, &scon) != -1) + xx = setfilecon(nfn, scon); + if (scon != NULL) + freecon(scon); + } + bottom: ofn = _free(ofn); nfn = _free(nfn); @@ -3892,6 +3913,10 @@ case 0: break; } + unblockSignals(NULL, &sigMask); + + if (selinux) + matchpathcon_fini(); return rc; } @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.h ============================================================================ $ cvs diff -u -r1.72.2.1 -r1.72.2.2 rpmdb.h --- rpm/rpmdb/rpmdb.h 8 Feb 2008 11:40:14 -0000 1.72.2.1 +++ rpm/rpmdb/rpmdb.h 5 Jun 2008 14:42:09 -0000 1.72.2.2 @@ -1004,7 +1004,20 @@ /[EMAIL PROTECTED]@*/ /** \ingroup rpmdb - * Return number of instances of package in rpm database. + * Return number of instances of key in a tag index. + * @param db rpm database + * @param tag rpm tag + * @param keyp key data + * @param keylen key data length (0 will use strlen(keyp)) + * @return number of instances + */ +int rpmdbCount(/[EMAIL PROTECTED]@*/ rpmdb db, rpmTag tag, + const void * keyp, size_t keylen) + /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ + /[EMAIL PROTECTED] db, rpmGlobalMacroContext, fileSystem, internalState @*/; + +/** \ingroup rpmdb + * Return number of instances of package in Name index. * @param db rpm database * @param name rpm package name * @return number of instances @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org