Just FYI: These are deep internal interfaces which should NOT be relied on within RPM.
I.e. if you're segfaulting here you need an RPM upgrade, not a patch. The fingerprinting code is NOT a supportable API, and IS being actively refactored to be replaced and eliminated. This code path is explicitly exercised as part of monthly releases, and the fact that the segfault wasn't seen indicates a data driven obscure code path that SHOULD be looked at carefully in the packaging, not in RPM. Short answer: You can expect further breakage. 73 de Jeff On May 27, 2011, at 9:47 AM, Pinto Elia wrote: > RPM Package Manager, CVS Repository > http://rpm5.org/cvs/ > ____________________________________________________________________________ > > Server: rpm5.org Name: Pinto Elia > Root: /v/rpm/cvs Email: devzero2...@rpm5.org > Module: rpm Date: 27-May-2011 15:47:30 > Branch: HEAD Handle: 2011052713472901 > > Modified files: > rpm CHANGES > rpm/rpmdb fprint.c > > Log: > In fpLookupSubdir, data returned by hash should be of type > "struct rpmffi_s **" instead of "struct rpmffi_s *" to avoid > segfault. Patch by Qing He. > > Summary: > Revision Changes Path > 1.3651 +3 -0 rpm/CHANGES > 1.41 +3 -3 rpm/rpmdb/fprint.c > ____________________________________________________________________________ > > patch -p0 <<'@@ .' > Index: rpm/CHANGES > ============================================================================ > $ cvs diff -u -r1.3650 -r1.3651 CHANGES > --- rpm/CHANGES 27 May 2011 07:19:54 -0000 1.3650 > +++ rpm/CHANGES 27 May 2011 13:47:29 -0000 1.3651 > @@ -8,6 +8,9 @@ > - afb: yaml: use !!timestamp for timestamps > > 5.4.0 -> 5.4.1: > + - devzero2000: In fpLookupSubdir, data returned by hash should be of > type > + "struct rpmffi_s **" instead of "struct rpmffi_s *" to avoid > + segfault. Patch by Qing He. > - devzero2000: the elfutils --reloc-debug-sections is useful > mostly for LKM and not in general. Better to enable > when needed/useful and not systemwide. > @@ . > patch -p0 <<'@@ .' > Index: rpm/rpmdb/fprint.c > ============================================================================ > $ cvs diff -u -r1.40 -r1.41 fprint.c > --- rpm/rpmdb/fprint.c 6 Mar 2010 16:20:46 -0000 1.40 > +++ rpm/rpmdb/fprint.c 27 May 2011 13:47:30 -0000 1.41 > @@ -333,7 +333,7 @@ > *te = '\0'; > > while (te < se) { > - struct rpmffi_s * recs; > + struct rpmffi_s ** recs; > int numRecs; > int i; > > @@ -346,8 +346,8 @@ > const char * link; > int fx; > > - fx = recs[i].fileno; > - fi = recs[i].p->fi; > + fx = recs[i]->fileno; > + fi = recs[i]->p->fi; > flink = fi->flinks[fx]; > if (!(flink && *flink != '\0')) > continue; > @@ . > ______________________________________________________________________ > RPM Package Manager http://rpm5.org > CVS Sources Repository rpm-...@rpm5.org
smime.p7s
Description: S/MIME cryptographic signature