ref: 703960d83de310d26c273c79c2f9abdd645e1eda
dir: /test/T.overflow.broken/
#!/bin/rc
echo T.overflow: test some overflow conditions >[1=2]
$awk 'BEGIN {
for (i = 1; i < 1000; i++) s = s "a-z"
if ("x" ~ "[" s "]")
print "ugh"
}' >foo >[2]foo2
grep . foo2 >[1=2] && echo 'BAD: T.overflow: too long char class' >[1=2]
echo 4000004 >foo1
$awk '
BEGIN {
x1 = sprintf("%1000000s\n", "hello")
x2 = sprintf("%-1000000s\n", "world")
x3 = sprintf("%1000000.1000000s\n", "goodbye")
x4 = sprintf("%-1000000.1000000s\n", "goodbye")
print length(x1 x2 x3 x4)
}' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow: huge sprintfs' >[1=2]
echo 0 >foo1
$awk '
BEGIN {
for (i = 0; i < 100000; i++)
x[i] = i
for (i in x)
delete x[i]
n = 0
for (i in x)
n++
print n
}' >foo2
cmp -s foo1 foo2 || echo 'BAD: T.overflow: big array' >[1=2]
echo x >foo1
$awk '{print $40000000000000}' <foo1 >foo2 >[2]foo
grep 'out of range field' foo >/dev/null || echo >[1=2] 'BAD: T.overflow: \$400000' >[1=2]
rm -f foo_x*
$awk 'BEGIN { for (i=1; i <= 1000; i++) print i >("foo_x" i) }'
ls foo_x* | grep '1000' >/dev/null || echo >[1=2] 'BAD: T.overflow: openfiles' >[1=2]
rm foo_x*