#! /bin/sh # Test for a bug in glibc's regex code as of 2015-09-19. # # Copyright 2015-2017 Free Software Foundation, Inc. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. . "${srcdir=.}/init.sh"; path_prepend_ ../src echo aa > in || framework_failure_ fail=0 grep -E 'b|(.)b|\1|b' in >out status=$? # POSIX isn't clear whether this regular expression should be invalid, # (because the \1 is out of range for REs that could precede it) # or valid but \1 should not match. Allow either interpretation. test $status -eq 2 || test $status -eq 1 || fail=1 grep -E '0|()0|\1|0' in >out status=$? test $status -eq 2 || test $status -eq 1 || fail=1 # This fuzz test comes from Bug#27838. printf '\1772{\177)\216\216\n\216\216\t\0372{\177)(\037W3|\244\\\220)\0373|d{\244k\220)\0373|(|2{\177)(\037W3|\244\\\220)\0373|d{\244k\220)\0373|d{\220)(\013\0373|2{\177)\216\255\t\216\216\t\0373|$\\2\n' >pat LC_ALL=C grep -E -f pat in >out status=$? test $status -eq 2 || test $status -eq 1 || fail=1 Exit $fail