[CVS] RPM: rpm-5_4: rpm/ CHANGES rpm/tools/ dbconvert.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 06-Jul-2011 14:56:52 Branch: rpm-5_4 Handle: 2011070612565101 Modified files: (Branch: rpm-5_4) rpm CHANGES rpm/tools dbconvert.c Log: dbconvert: fix segfault when no root is specified. Summary: RevisionChanges Path 1.3501.2.145+1 -0 rpm/CHANGES 2.1.2.7 +2 -2 rpm/tools/dbconvert.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3501.2.144 -r1.3501.2.145 CHANGES --- rpm/CHANGES 28 Jun 2011 12:26:10 - 1.3501.2.144 +++ rpm/CHANGES 6 Jul 2011 12:56:51 - 1.3501.2.145 @@ -1,4 +1,5 @@ 5.4.1 - 5.4.2 +- proyvind: dbconvert: fix segfault when no root is specified. - devzero2000: merge afb patch portability of endian - proyvind: check-multiarch-files: remove unnecessary import of MDK::Common, causing undesired dependency from perl dependency generator. @@ . patch -p0 '@@ .' Index: rpm/tools/dbconvert.c $ cvs diff -u -r2.1.2.6 -r2.1.2.7 dbconvert.c --- rpm/tools/dbconvert.c 28 Jun 2011 12:26:11 - 2.1.2.6 +++ rpm/tools/dbconvert.c 6 Jul 2011 12:56:52 - 2.1.2.7 @@ -82,7 +82,7 @@ addMacro(NULL, __dbi_txn, NULL, create mpool txn thread thread_count=64 nofsync, -1); /* (ugly) clear any existing locks */ - fn = rpmGetPath(prefix[0] ? prefix : , dbpath, /, __db.*, NULL); + fn = rpmGetPath(prefix prefix[0] ? prefix : , dbpath, /, __db.*, NULL); xx = Glob(fn, 0, NULL, gl); for (i = 0; i (int)gl.gl_pathc; i++) xx = Unlink(gl.gl_pathv[i]); @@ -90,7 +90,7 @@ Globfree(gl); tsCur = rpmtsCreate(); - rpmtsSetRootDir(tsCur, prefix prefix[0] ? prefix : NULL); + rpmtsSetRootDir(tsCur, prefix prefix prefix[0] ? prefix : NULL); if(!rpmtsOpenDB(tsCur, O_RDONLY)) { if(dbtype == 1) { addMacro(NULL, _dbi_tags, NULL, Packages:Name:Basenames:Group:Requirename:Providename:Conflictname:Triggername:Dirnames:Requireversion:Provideversion:Installtid:Sigmd5:Sha1header:Filedigests:Depends:Pubkeys, -1); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/ CHANGES rpm/tools/ dbconvert.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 30-Mar-2011 16:17:31 Branch: rpm-5_4 Handle: 2011033014173100 Modified files: (Branch: rpm-5_4) rpm CHANGES rpm/tools dbconvert.c Log: fix conversion to older hash database format resulting in missing package from rpmdb Summary: RevisionChanges Path 1.3501.2.83 +2 -0 rpm/CHANGES 2.1.2.3 +13 -2 rpm/tools/dbconvert.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3501.2.82 -r1.3501.2.83 CHANGES --- rpm/CHANGES 30 Mar 2011 11:09:47 - 1.3501.2.82 +++ rpm/CHANGES 30 Mar 2011 14:17:31 - 1.3501.2.83 @@ -1,4 +1,6 @@ 5.4.0 - 5.4.1: +- proyvind: dbconvert: fix conversion to older hash database format + resulting in missing package from rpmdb - devzero2000: add %_initddir macro for Mandriva (ref http://lists.mandriva.com/maintainers/2011-03/msg00252.php) - jbj: fix: reduce false positives checking for duplicate keys(mdvbz#62822). @@ . patch -p0 '@@ .' Index: rpm/tools/dbconvert.c $ cvs diff -u -r2.1.2.2 -r2.1.2.3 dbconvert.c --- rpm/tools/dbconvert.c 27 Jan 2011 01:10:02 - 2.1.2.2 +++ rpm/tools/dbconvert.c 30 Mar 2011 14:17:31 - 2.1.2.3 @@ -151,6 +151,17 @@ int doswap = -1; float pct = 0; uint8_t tmp; + /* + * Older rpm places number of keys as first entry of hash database, + * so any package placed at beginning of it will be missing from + * rpmdb... + */ + if (dbtype == 1){ + key.data = i; + data.data = nkeys; + key.size = data.size = sizeof(uint32_t); + xx = dbiNew-dbi_db-put(dbiNew-dbi_db, NULL, key, data, 0); + } while ((xx = dbcpCur-c_get(dbcpCur, key, data, DB_NEXT)) == 0) { tmp = pct; pct = (100*(float)++i/nkeys) + 0.5; @@ -159,8 +170,8 @@ fprintf(stderr, \rconverting %s%s/Packages: %u/%u %d%%, prefix prefix[0] ? prefix : , tmppath, i, nkeys, (int)pct); } fflush(stdout); - if(!*(uint32_t*)key.data) - continue; + if(i == 1 !*(uint32_t*)key.data) + continue; if(__builtin_expect(doswap, 1) 0) { if((htole32(*(uint32_t*)key.data) 1000 swap 0) || (htole32(*(uint32_t*)key.data) 1000 swap 0)) @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org