RPM Community Forums

Mailing List Message of <rpm-devel>

Re: Dueling symbols using PCRE emulation of POSIX ERE's

From: Jeff Johnson <n3npq@mac.com>
Date: Wed 14 Jan 2009 - 16:27:36 CET
Message-id: <0E0F4EBD-2099-4846-938E-D9BCA01EED9A@mac.com>

On Jan 14, 2009, at 10:12 AM, Dmitry V. Levin wrote:

> On Wed, Jan 14, 2009 at 08:06:09AM -0500, Jeff Johnson wrote:
>> When using yum+rpmlib, there appears to be confusions about which
>> "regcomp" symbol is to be used. Here's a trace from valgrind:
>>
>> ==1401==
>> ==1401== Invalid write of size 1
>> ==1401==    at 0x42A4770: regcomp (in /lib/libc-2.8.90.so)
>> ==1401==    by 0x4AB97FB: mireRegcomp (mire.c:379)
>> ==1401==    by 0x4A52FA7: rpmEVRmire (rpmevr.c:154)
>> ==1401==    by 0x4A5300E: rpmEVRparse (rpmevr.c:164)
>> ==1401==    by 0x49E10F6: rpmdsCompare (rpmds.c:3655)
>> ==1401==    by 0x49E181D: rpmdsAnyMatchesDep (rpmds.c:3807)
>> ==1401==    by 0x49B8BF0: rpmtsAddObsoletes (depends.c:481)
>> ==1401==    by 0x49B984B: rpmtsAddInstallElement (depends.c:796)
>> ==1401==    by 0x496F56A: rpmts_AddInstall (rpmts-py.c:440)
>> ==1401==    by 0x40A0AF8: PyCFunction_Call (in /usr/lib/
>> libpython2.5.so.1.0)
>> ==1401==    by 0x40F0CEF: PyEval_EvalFrameEx (in /usr/lib/
>> libpython2.5.so.1.0)
>> ==1401==    by 0x40F2964: PyEval_EvalCodeEx (in /usr/lib/
>> libpython2.5.so.1.0)
>> ==1401==  Address 0x62b31c4 is not stack'd, malloc'd or (recently)
>> free'd
>>
>> That forces MANDATORY INTERNAL PCRE always afaict.
>
> There are other methods to avoid this issue, e.g.
> http://rpm5.org/community/rpm-devel/1562.html
>

Thank you. I will add identical #defines to rpmio/mire.c
today, and that will fix the yum+rpmlib problem.

The lurking issue is that PCRE patterns are being passed
through a POSIX regcomp(3)/regexec(3) API.

And the fundamental issue is choosing PCRE or ERE or both
or either or ....

Choosing a *RE dialect needs to be resolved so that patterns can be  
added
to *.rpm content portably and reliably.

73 de Jeff
Received on Wed Jan 14 16:28:00 2009
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.