https://bugs.exim.org/show_bug.cgi?id=1717

            Bug ID: 1717
           Summary: Classes beginning with POSIX class notation missing
                    elements
           Product: PCRE
           Version: 8.37
          Hardware: x86
                OS: All
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Code
          Assignee: p...@hermes.cam.ac.uk
          Reporter: justin.vii...@intel.com
                CC: pcre-dev@exim.org

Hi there,

We had a fuzzer (actually a simple pattern generator) produce some cases that
appear to be miscompiled by PCRE. Here is an example, using pcretest:

$ bin/pcretest -d
PCRE version 8.37 2015-04-28

  re> /a[[:punct:]b]/8W
------------------------------------------------------------------
  0   7 Bra
  3     ab
  7   7 Ket
 10     End
------------------------------------------------------------------

It appears that the POSIX class has gone missing, leaving this class as just
[b]. Note that if an extra element is added, we get what we would expect:

  re> /a[[:punct:]bc]/8W
------------------------------------------------------------------
  0  45 Bra
  3     a
  5     [bc[:punct:]]
 45  45 Ket
 48     End
------------------------------------------------------------------

Similarly, we get the expected class (including :punct:) if we reorder the
first case as /a[b[:punct:]]/8W.

This seems to be dependent on the PCRE_UCP flag and happens for the [:graph:],
[:punct:], [:print:] classes -- perhaps to do with their special handling in
UCP mode?

This bug appears to be present in PCRE2 10.20 as well.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to