opnsense-src/lib/libc/tests
Bill Sommerfeld 8f7ed58a15 regex: mixed sets are misidentified as singletons
Fix "singleton" function used by regcomp() to turn character set matches
into exact character matches if a character set has exactly one
element.

The underlying cset representation is complex; most critically it
records"small" characters (codepoint less than either 128
or 256 depending on locale) in a bit vector, and "wide" characters in
a secondary array.

Unfortunately the "singleton" function uses to identify singleton sets
treated a cset as a singleton if either the "small" or the "wide" sets
had exactly one element (it would then ignore the other set).

The easiest way to demonstrate this bug:

	$ export LANG=C.UTF-8
	$ echo 'a' | grep '[abà]'

It should match (and print "a") but instead it doesn't match because the
single accented character in the set is misinterpreted as a singleton.

Reviewed by:	kevans, yuripv
Obtained from:	illumos
Differential Revision:	https://reviews.freebsd.org/D43149
2023-12-22 12:19:59 +07:00
..
c063 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
db Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
gen libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
hash Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
iconv libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
inet Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
locale libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
net Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
nss libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
regex regex: mixed sets are misidentified as singletons 2023-12-22 12:19:59 +07:00
resolv Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
rpc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
setjmp Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
ssp Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
stdio fflush: Add test for buffer handling in __sflush 2023-11-07 08:21:12 -05:00
stdlib libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
string lib/libc/tests/string/strcspn_test.c: add test for correct match order 2023-12-21 03:16:57 +01:00
sys libc: Purge unneeded cdefs.h 2023-11-01 16:44:30 -06:00
termios Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
time Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
tls Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
tls_dso Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
ttyio Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.netbsd-tests Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00