Bug 1161597

Summary: Capturing group offsets before forced match are not initialized
Product: Red Hat Enterprise Linux 7 Reporter: Petr Pisar <ppisar>
Component: pcreAssignee: Petr Pisar <ppisar>
Status: CLOSED ERRATA QA Contact: Jan Kepler <jkejda>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: isenfeld, jkejda, pbokoc
Target Milestone: rcKeywords: Patch
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: http://bugs.exim.org/show_bug.cgi?id=1537
Whiteboard:
Fixed In Version: pcre-8.32-15.el7 Doc Type: Bug Fix
Doc Text:
Previously, non-matched groups within capturing groups up to a forced match were not being properly reset by PCRE, causing the library to incorrectly match some groups. With this update, non-matched groups within capturing groups up to a forced match are being properly marked as non-matching.
Story Points: ---
Clone Of: 1161587 Environment:
Last Closed: 2015-11-19 05:15:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Upstream fix ported to 8.32 none

Description Petr Pisar 2014-11-07 12:49:07 UTC
+++ This bug was initially created as a clone of Bug #1161587 +++

As reported to upstream <http://bugs.exim.org/show_bug.cgi?id=1537>:

$ pcretest  
PCRE version 8.36 2014-09-26

  re> /(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
data> 1234abcd
 0:
 1:
 2:
 3:
 4:
 5:
data>

Which should return "unset" groups 1--4. The library forgets to set those offsets to -1.

Fixed by upstream:

commit e2eeaf85f1b5d6c4669b621d309ff904cbf96f4b
Author: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
Date:   Wed Nov 5 15:08:03 2014 +0000

    Fix bug when there are unset groups prior to (*ACCEPT) within a capturing
    group.
    
    
    git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1510 2f5784b3-3f2a-0410-8824-cb99058d5e15

[...]
--- Additional comment from Petr Pisar on 2014-11-07 12:28:00 GMT ---

Simpler reproducer:

Was:

  re> /(x)|((*ACCEPT))/
data> abcd
 0: 
 1: 
 2: 

Should be:

  re> /(x)|((*ACCEPT))/
data> abcd
 0: 
 1: <unset>
 2: 
data>

----

RHEL-7 is affected (pcre-8.32-13.el7).

Comment 1 Petr Pisar 2014-11-07 13:10:10 UTC
Created attachment 954919 [details]
Upstream fix ported to 8.32

Comment 7 errata-xmlrpc 2015-11-19 05:15:18 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2142.html