1998-05-17  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

	* sunrpc/svc_tcp.c: Add FreeBSD DoS patch.
	* sunrpc/xdr_rec.c: Likewise.
This commit is contained in:
Ulrich Drepper 1998-05-17 15:44:39 +00:00
parent 922903d217
commit 92040cbc5f
5 changed files with 445 additions and 2 deletions

View File

@ -1,3 +1,8 @@
1998-05-17 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/svc_tcp.c: Add FreeBSD DoS patch.
* sunrpc/xdr_rec.c: Likewise.
1998-05-15 Ulrich Drepper <drepper@cygnus.com>
* posix/Makefile (tests): Add runptests.

View File

@ -29,6 +29,7 @@ headers := sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h \
bits/sched.h re_comp.h wait.h bits/environments.h cpio.h
distribute := confstr.h TESTS TESTS2C.sed testcases.h \
PTESTS PTESTS2C.sed ptestcases.h \
globtest.c globtest.sh wordexp-tst.sh
routines := \
@ -52,14 +53,14 @@ routines := \
pread pwrite pread64 pwrite64
aux := init-posix environ
tests := tstgetopt testfnm runtests wordexp-test
tests := tstgetopt testfnm runtests wordexp-test runptests
test-srcs := globtest
others := getconf
install-bin := getconf
install-lib := libposix.a
gpl2lgpl := getopt.c getopt1.c getopt.h regex.c regex.h
before-compile := testcases.h
before-compile := testcases.h ptestcases.h
# So they get cleaned up.
generated := $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10)
@ -89,6 +90,13 @@ testcases.h: TESTS TESTS2C.sed
ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) commit -mRegenerated $@
endif
ptestcases.h: PTESTS PTESTS2C.sed
sed -f PTESTS2C.sed < $< > $@T
mv -f $@T $@
ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) commit -mRegenerated $@
endif
# Make the standalone glob/fnmatch package.

309
posix/PTESTS Normal file
View File

@ -0,0 +1,309 @@
# 2.8.2 Regular Expression General Requirement
2¦4¦bb*¦abbbc¦
2¦2¦bb*¦ababbbc¦
7¦9¦A#*::¦A:A#:qA::qA#::qA##::q¦
1¦5¦A#*::¦A##::A#::qA::qA#:q¦
# 2.8.3.1.2 BRE Special Characters
# GA108
2¦2¦\.¦a.c¦
2¦2¦\[¦a[c¦
2¦2¦\\¦a\c¦
2¦2¦\*¦a*c¦
2¦2¦\^¦a^c¦
2¦2¦\$¦a$c¦
7¦11¦X\*Y\*8¦Y*8X*8X*Y*8¦
# GA109
2¦2¦[.]¦a.c¦
2¦2¦[[]¦a[c¦
-1¦-1¦[[]¦ac¦
2¦2¦[\]¦a\c¦
1¦1¦[\a]¦abc¦
2¦2¦[\.]¦a\.c¦
2¦2¦[\.]¦a.\c¦
2¦2¦[*]¦a*c¦
2¦2¦[$]¦a$c¦
2¦2¦[X*Y8]¦7*8YX¦
# GA110
2¦2¦*¦a*c¦
3¦4¦*a¦*b*a*c¦
1¦5¦**9=¦***9=9¦
# GA111
1¦1¦^*¦*bc¦
-1¦-1¦^*¦a*c¦
-1¦-1¦^*¦^*ab¦
1¦5¦^**9=¦***9=¦
-1¦-1¦^*5<*9¦5<9*5<*9¦
# GA112
2¦3¦\(*b\)¦a*b¦
-1¦-1¦\(*b\)¦ac¦
1¦6¦A\(**9\)=¦A***9=79¦
# GA113(1)
1¦3¦\(^*ab\)¦*ab¦
-1¦-1¦\(^*ab\)¦^*ab¦
-1¦-1¦\(^*b\)¦a*b¦
-1¦-1¦\(^*b\)¦^*b¦
# GA113(2)
## -1¦-1¦\(^*ab\)¦*ab WRONG
-1¦-1¦\(^*ab\)¦^*ab¦
1¦1¦\(^*b\)¦b¦
1¦3¦\(^*b\)¦^^b¦
# GA114
1¦3¦a^b¦a^b¦
1¦3¦a\^b¦a^b¦
1¦1¦^^¦^bc¦
2¦2¦\^¦a^c¦
1¦1¦[c^b]¦^abc¦
1¦1¦[\^ab]¦^ab¦
2¦2¦[\^ab]¦c\d¦
-1¦-1¦[^^]¦^¦
1¦3¦\(a^b\)¦a^b¦
1¦3¦\(a\^b\)¦a^b¦
2¦2¦\(\^\)¦a^b¦
# GA115
3¦3¦$$¦ab$¦
-1¦-1¦$$¦$ab¦
2¦3¦$c¦a$c¦
2¦2¦[$]¦a$c¦
1¦2¦\$a¦$a¦
3¦3¦\$$¦ab$¦
2¦6¦A\([34]$[34]\)B¦XA4$3BY¦
# 2.8.3.1.3 Perios in BREs
# GA116
1¦1¦.¦abc¦
-1¦-1¦.ab¦abc¦
1¦3¦ab.¦abc¦
1¦3¦a.b¦a,b¦
-1¦-1¦.......¦PqRs6¦
1¦7¦.......¦PqRs6T8¦
# 2.8.3.2 RE Bracket Expression
# GA118
2¦2¦[abc]¦xbyz¦
-1¦-1¦[abc]¦xyz¦
2¦2¦[abc]¦xbay¦
# GA119
2¦2¦[^a]¦abc¦
4¦4¦[^]cd]¦cd]ef¦
2¦2¦[^abc]¦axyz¦
-1¦-1¦[^abc]¦abc¦
3¦3¦[^[.a.]b]¦abc¦
3¦3¦[^[=a=]b]¦abc¦
2¦2¦[^-ac]¦abcde-¦
2¦2¦[^ac-]¦abcde-¦
3¦3¦[^a-b]¦abcde¦
3¦3¦[^a-bd-e]¦dec¦
2¦2¦[^---]¦-ab¦
16¦16¦[^a-zA-Z0-9]¦pqrstVWXYZ23579#¦
# GA120(1)
3¦3¦[]a]¦cd]ef¦
1¦1¦[]-a]¦a_b¦
3¦3¦[][.-.]-0]¦ab0-]¦
1¦1¦[]^a-z]¦string¦
# GA120(2)
4¦4¦[^]cd]¦cd]ef¦
0¦0¦[^]]*¦]]]]]]]]X¦
0¦0¦[^]]*¦]]]]]]]]¦
9¦9¦[^]]\{1,\}¦]]]]]]]]X¦
-1¦-1¦[^]]\{1,\}¦]]]]]]]]¦
# GA120(3)
3¦3¦[c[.].]d]¦ab]cd¦
2¦8¦[a-z]*[[.].]][A-Z]*¦Abcd]DEFg¦
# GA121
2¦2¦[[.a.]b]¦Abc¦
1¦1¦[[.a.]b]¦aBc¦
-1¦-1¦[[.a.]b]¦ABc¦
3¦3¦[^[.a.]b]¦abc¦
3¦3¦[][.-.]-0]¦ab0-]¦
3¦3¦[A-[.].]c]¦ab]!¦
# GA122
-2¦-2¦[[.ch]]¦abc¦
-2¦-2¦[[.ab.][.CD.][.EF.]]¦yZabCDEFQ9¦
# GA125
2¦2¦[[=a=]b]¦Abc¦
1¦1¦[[=a=]b]¦aBc¦
-1¦-1¦[[=a=]b]¦ABc¦
3¦3¦[^[=a=]b]¦abc¦
# GA126
2¦7¦[[:alnum:]]*¦ aB28gH¦
2¦5¦[^[:alnum:]]*¦2 ,
2¦5¦[[:alpha:]]*¦ aBgH2¦
1¦6¦[^[:alpha:]]*¦2 8,
1¦2¦[[:blank:]]*¦ ¦
1¦8¦[^[:blank:]]*¦aB28gH, ¦
1¦2¦[[:cntrl:]]*¦  ¦
1¦8¦[^[:cntrl:]]*¦aB2 8gh,¦
2¦3¦[[:digit:]]*¦a28¦
1¦8¦[^[:digit:]]*¦aB gH,¦
1¦7¦[[:graph:]]*¦aB28gH, ¦
1¦3¦[^[:graph:]]*¦ 
1¦2¦[[:lower:]]*¦agB¦
1¦8¦[^[:lower:]]*¦B2 8H,
1¦8¦[[:print:]]*¦aB2 8gH, ¦
1¦2¦[^[:print:]]*¦  ¦
2¦2¦[[:punct:]]*¦a,2¦
1¦9¦[^[:punct:]]*¦aB2 8gH¦
1¦3¦[[:space:]]*¦ ¦
2¦9¦[^[:space:]]*¦ aB28gH, ¦
2¦3¦[[:upper:]]*¦aBH2¦
1¦8¦[^[:upper:]]*¦a2 8g,
2¦5¦[[:xdigit:]]*¦gaB28h¦
2¦7¦[^[:xdigit:]]*¦a gH,
# GA127
-2¦-2¦[b-a]¦abc¦
1¦1¦[a-c]¦bbccde¦
2¦2¦[a-b]¦-bc¦
3¦3¦[a-z0-9]¦AB0¦
3¦3¦[^a-b]¦abcde¦
3¦3¦[^a-bd-e]¦dec¦
1¦1¦[]-a]¦a_b¦
2¦2¦[+--]¦a,b¦
2¦2¦[--/]¦a.b¦
2¦2¦[^---]¦-ab¦
3¦3¦[][.-.]-0]¦ab0-]¦
3¦3¦[A-[.].]c]¦ab]!¦
2¦6¦bc[d-w]xy¦abchxyz¦
# GA129
1¦1¦[a-cd-f]¦dbccde¦
-1¦-1¦[a-ce-f¦dBCCdE¦
2¦4¦b[n-zA-M]Y¦absY9Z¦
2¦4¦b[n-zA-M]Y¦abGY9Z¦
# GA130
3¦3¦[-xy]¦ac-¦
2¦4¦[c[-xy]D¦ac-D+¦
2¦2¦[--/]¦a.b¦
2¦4¦c[--/]D¦ac.D+b¦
2¦2¦[^-ac]¦abcde-¦
1¦3¦a[^-ac]c¦abcde-¦
3¦3¦[xy-]¦zc-¦
2¦4¦c[xy-]7¦zc-786¦
2¦2¦[^ac-]¦abcde-¦
2¦4¦a[^ac-]c¦5abcde-¦
2¦2¦[+--]¦a,b¦
2¦4¦a[+--]B¦Xa,By¦
2¦2¦[^---]¦-ab¦
4¦6¦X[^---]Y¦X-YXaYXbY¦
# 2.8.3.3 BREs Matching Multiple Characters
# GA131
3¦4¦cd¦abcdeabcde¦
1¦2¦ag*b¦abcde¦
-1¦-1¦[a-c][e-f]¦abcdef¦
3¦4¦[a-c][e-f]¦acbedf¦
4¦8¦abc*XYZ¦890abXYZ#*¦
4¦9¦abc*XYZ¦890abcXYZ#*¦
4¦15¦abc*XYZ¦890abccccccccXYZ#*¦
-1¦-1¦abc*XYZ¦890abc*XYZ#*¦
# GA132
2¦4¦\(*bc\)¦a*bc¦
1¦2¦\(ab\)¦abcde¦
1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦
3¦8¦43\(2\(6\)*0\)AB¦654320ABCD¦
3¦9¦43\(2\(7\)*0\)AB¦6543270ABCD¦
3¦12¦43\(2\(7\)*0\)AB¦6543277770ABCD¦
# GA133
1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦
-1¦-1¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)¦abcdefghijk¦
# GA134
2¦4¦\(bb*\)¦abbbc¦
2¦2¦\(bb*\)¦ababbbc¦
1¦6¦a\(.*b\)¦ababbbc¦
1¦2¦a\(b*\)¦ababbbc¦
1¦20¦a\(.*b\)c¦axcaxbbbcsxbbbbbbbbc¦
# GA135
1¦7¦\(a\(b\(c\(d\(e\)\)\)\)\)\4¦abcdededede¦
1¦2¦a\(b\)*c\1¦acb¦
1¦11¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9¦abcdefghijjk¦
# GA136
1¦2¦a\(b\)*c\1¦acb¦
4¦7¦a\(b\(c\(d\(f\)*\)\)\)\4¦xYzabcdePQRST¦
# GA137
-2¦-2¦\(a\(b\)\)\3¦foo¦
-2¦-2¦\(a\(b\)\)\(a\(b\)\)\5¦foo¦
# GA138
1¦2¦ag*b¦abcde¦
1¦10¦a.*b¦abababvbabc¦
2¦5¦b*c¦abbbcdeabbbbbbcde¦
2¦5¦bbb*c¦abbbcdeabbbbbbcde¦
1¦5¦a\(b\)*c\1¦abbcbbb¦
-1¦-1¦a\(b\)*c\1¦abbdbd¦
0¦0¦\([a-c]*\)\1¦abcacdef¦
1¦6¦\([a-c]*\)\1¦abcabcabcd¦
1¦2¦a^*b¦ab¦
1¦5¦a^*b¦a^^^b¦
# GA139
1¦2¦a\{2\}¦aaaa¦
1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦
1¦2¦\(a\)\1\{1,2\}¦aabc¦
1¦3¦\(a\)010{1,2\}¦aaaabc¦
1¦4¦\(\(a\)\1\)\{1,2\}¦aaaabc¦
# GA140
1¦2¦a\{2\}¦aaaa¦
-1¦-1¦a\{2\}¦abcd¦
0¦0¦a\{0\}¦aaaa¦
1¦64¦a\{64\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
# GA141
1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦
-1¦-1¦\([a-c]*\)\{2,\}¦abcdefg¦
1¦3¦\([a-c]*\)\{1,\}¦abcdefg¦
-1¦-1¦a\{64,\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
# GA142
1¦3¦a\{2,3\}¦aaaa¦
-1¦-1¦a\{2,3\}¦abcd¦
0¦0¦\([a-c]*\)\{0,0\}¦foo¦
1¦63¦a\{1,63\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦
# 2.8.3.4 BRE Precdence
# GA143
2¦20¦\^\[[[.].]]\\(\\1\\)\\*\\{1,2\\}\$¦a^[]\(1\)\*\{1,2\}$b¦
1¦6¦[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]¦*\]=.;¦
1¦6¦[$\(*\)1]*¦$\()*^¦
1¦1¦[\1]¦1¦
1¦1¦[\{1,2\}]¦{¦
2¦2¦\(*\)*\1*¦a*b*11¦
1¦5¦\(a\(b\{1,2\}\)\{1,2\}\)¦abbab¦
1¦1¦^\(^\(^a$\)$\)$¦a¦
1¦2¦\(a\)\1$¦aa¦
1¦3¦ab*¦abb¦
1¦4¦ab\{2,4\}¦abbbc¦
# 2.8.3.5 BRE Expression Anchoring
# GA144
1¦1¦^a¦abc¦
-1¦-1¦^b¦abc¦
-1¦-1¦^[a-zA-Z]¦99Nine¦
1¦4¦^[a-zA-Z]¦Nine99¦
# GA145(1)
1¦2¦\(^a\)\1¦aabc¦
-1¦-1¦\(^a\)\1¦^a^abc¦
1¦2¦\(^^a\)¦^a¦
1¦1¦\(^^\)¦^^¦
1¦3¦\(^abc\)¦abcdef¦
-1¦-1¦\(^def\)¦abcdef¦
# GA145(2)
-1¦-1¦\(^a\)\1¦aabc¦
1¦4¦\(^a\)\1¦^a^abc¦
-1¦-1¦\(^^a\)¦^a¦
1¦2¦\(^^\)¦^^¦
# GA146
3¦3¦a$¦cba¦
-1¦-1¦a$¦abc¦
5¦7¦[a-z]*$¦99ZZxyz¦
-1¦-1¦[a-z]*$¦99ZZxyz99¦
3¦3¦$$¦ab$¦
-1¦-1¦$$¦$ab¦
3¦3¦\$$¦ab$¦
# GA147(1)
-1¦-1¦\(a$\)\1¦bcaa¦
-1¦-1¦\(a$\)\1¦ba$¦
-1¦-1¦\(ab$\)¦ab$¦
1¦2¦\(ab$\)¦ab¦
4¦6¦\(def$\)¦abcdef¦
-1¦-1¦\(abc$\)¦abcdef¦
# GA147(2)
-1¦-1¦\(a$\)\1¦bcaa¦
2¦5¦\(a$\)\1¦ba$a$¦
-1¦-1¦\(ab$\)¦ab¦
1¦3¦\(ab$\)¦ab$¦
# GA148
0¦0¦^$¦¦
1¦3¦^abc$¦abc¦
-1¦-1¦^xyz$¦^xyz^¦
-1¦-1¦^234$¦^234$¦
1¦9¦^[a-zA-Z0-9]*$¦2aA3bB9zZ¦
-1¦-1¦^[a-z0-9]*$¦2aA3b#B9zZ¦

4
posix/PTESTS2C.sed Normal file
View File

@ -0,0 +1,4 @@
/^##/d
s/# \(.*\)/ { 0, 0, "\1", NULL, },/
s/\([^¦]*\)¦\([^¦]*\)¦\([^¦]*\)¦\([^¦]*\)¦\(.*\)/ { \1, \2, "\3", "\4", \5 },/
s/\\/\\\\/g

117
posix/runptests.c Normal file
View File

@ -0,0 +1,117 @@
/* POSIX regex testsuite from IEEE 2003.2.
Copyright (C) 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
/* Data structure to describe the tests. */
struct test
{
int start;
int end;
const char *reg;
const char *str;
int options;
} tests[] =
{
#include "ptestcases.h"
};
int
main (int argc, char *argv[])
{
size_t cnt;
int errors = 0;
for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt)
if (tests[cnt].str == NULL)
{
printf ("\n%s\n%.*s\n", tests[cnt].reg,
(int) strlen (tests[cnt].reg),
"-----------------------------------------------------");
}
else
{
regex_t re;
regmatch_t match[20];
int err;
printf ("regexp: \"%s\", string: \"%s\" -> ", tests[cnt].reg,
tests[cnt].str);
/* Compile the expression. */
err = regcomp (&re, tests[cnt].reg, tests[cnt].options);
if (err != 0)
{
if (tests[cnt].start == -1)
puts ("failed, OK");
else
{
char buf[100];
regerror (err, &re, buf, sizeof (buf));
printf ("FAIL: %s\n", buf);
++errors;
}
continue;
}
/* Run the actual test. */
err = regexec (&re, tests[cnt].str, 20, match, 0);
if (err != 0)
{
if (tests[cnt].start == -1)
puts ("no match, OK");
else
{
puts ("no match, FAIL");
++errors;
}
}
else
{
if (match[0].rm_so == 0 && tests[cnt].start == 0
&& match[0].rm_eo == 0 && tests[cnt].end == 0)
puts ("match, OK");
else if (match[0].rm_so + 1 == tests[cnt].start
&& match[0].rm_eo == tests[cnt].end)
puts ("match, OK");
else
{
printf ("wrong match (%d to %d): FAIL\n",
match[0].rm_so, match[0].rm_eo);
++errors;
}
}
/* Free all resources. */
regfree (&re);
}
printf ("\n%u tests, %d errors\n", cnt, errors);
/* We should return here the error status but since some tests are known
to fail this would only cause the libc testsuite to fail. */
//return errors != 0;
return 0;
}