Bug 506521 - [RHEL4] using REG_ICASE with regcomp() can break ranges
[RHEL4] using REG_ICASE with regcomp() can break ranges
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: glibc (Show other bugs)
All Linux
low Severity medium
: rc
: ---
Assigned To: Andreas Schwab
Depends On:
  Show dependency treegraph
Reported: 2009-06-17 11:56 EDT by Jeff Bastian
Modified: 2010-05-11 12:05 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 506525 (view as bug list)
Last Closed: 2010-05-11 09:14:22 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
test case (716 bytes, text/plain)
2009-06-17 12:09 EDT, Jeff Bastian
no flags Details

External Trackers
Tracker ID Priority Status Summary Last Updated
Sourceware 10290 None None None Never

  None (edit)
Description Jeff Bastian 2009-06-17 11:56:26 EDT
Description of problem:
Using a regular expression range like [C-a] works fine if compiled with
regcomp() with just the REG_EXTENDED flag, but if the REG_ICASE flag is added
too, regcomp() returns an error "Invalid range end".

Testing other ranges with REG_ICASE reveals:
    [A-Z^-z] is invalid: Invalid range end (11)
    [A-Z^_`a-z] is ok
    [C-a] is invalid: Invalid range end (11)
    [C-f] is ok
    [_-a] is invalid: Invalid range end (11)
    [<-a] is ok
    [z-{] is ok

It appears that regcomp() is capitalizing the range if the REG_ICASE flag is
used, thus [C-a] becomes [C-A] and since A comes before C, the range is invalid.
 Likewise, in locales that match ASCII, ^ becomes before z, but after Z, so
[A-Z^-z] becomes invalid, and _ comes after A but before a, so [_-a] becomes

If this is not considered a bug, then at the very least, the regex(3) man page
should note the side-effects of using REG_ICASE.

Version-Release number of selected component (if applicable):

How reproducible:
every time

Steps to Reproduce:
1. compile a regex range [C-a] or [_-a] with regcomp() and REG_ICASE flag
Actual results:
regcomp() returns an "Invalid range end" error

Expected results:
regcomp() is consistent with or without REG_ICASE flag

Additional info:
If this is considered not a bug, then please update the regcomp(3) man page to note the side effects of using REG_ICASE.
Comment 1 Jeff Bastian 2009-06-17 11:57:21 EDT
Reported upstream at http://sourceware.org/bugzilla/show_bug.cgi?id=10290
Comment 2 Jeff Bastian 2009-06-17 12:09:17 EDT
Created attachment 348288 [details]
test case
Comment 4 RHEL Product and Program Management 2010-05-11 09:14:22 EDT
Development Management has reviewed and declined this request.  You may appeal
this decision by reopening this request.

Note You need to log in before you can comment on or make changes to this bug.