aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_test
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-10-09 16:29:44 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-10-09 16:29:44 +0000
commitafd7a8d744b29daaedbba1969307bd9ce17e7dc3 (patch)
tree015fa25e84f72a32b31724add0969f51a03bb74d /shell/hush_test
parent07e05c100fe6ac2bc5aa3505daabb55224c06a1f (diff)
downloadbusybox-w32-afd7a8d744b29daaedbba1969307bd9ce17e7dc3.tar.gz
busybox-w32-afd7a8d744b29daaedbba1969307bd9ce17e7dc3.tar.bz2
busybox-w32-afd7a8d744b29daaedbba1969307bd9ce17e7dc3.zip
hush: fix environment and memory leaks, add tests for them
function old new delta add_malloced_string_to_strings - 110 +110 run_list 1999 2086 +87 free_strings_and_unsetenv - 87 +87 hush_version_str - 18 +18 pseudo_exec_argv 139 146 +7 static.version_str 17 - -17 free_pipe 237 210 -27 done_word 790 642 -148 ------------------------------------------------------------------------------ (add/remove: 3/1 grow/shrink: 2/2 up/down: 309/-192) Total: 117 bytes
Diffstat (limited to 'shell/hush_test')
-rw-r--r--shell/hush_test/hush-vars/var_leaks.right1
-rwxr-xr-xshell/hush_test/hush-vars/var_leaks.tests14
-rwxr-xr-xshell/hush_test/hush-z_slow/leak_var.tests47
-rw-r--r--shell/hush_test/hush-z_slow/leak_var2.right2
-rwxr-xr-xshell/hush_test/hush-z_slow/leak_var2.tests63
5 files changed, 127 insertions, 0 deletions
diff --git a/shell/hush_test/hush-vars/var_leaks.right b/shell/hush_test/hush-vars/var_leaks.right
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/shell/hush_test/hush-vars/var_leaks.right
@@ -0,0 +1 @@
OK
diff --git a/shell/hush_test/hush-vars/var_leaks.tests b/shell/hush_test/hush-vars/var_leaks.tests
new file mode 100755
index 000000000..27c8c6504
--- /dev/null
+++ b/shell/hush_test/hush-vars/var_leaks.tests
@@ -0,0 +1,14 @@
1# external program
2a=b /bin/true
3env | grep ^a=
4
5# builtin
6a=b true
7env | grep ^a=
8
9# exec with redirection only
10# in bash, this leaks!
11a=b exec 1>&1
12env | grep ^a=
13
14echo OK
diff --git a/shell/hush_test/hush-z_slow/leak_var.tests b/shell/hush_test/hush-z_slow/leak_var.tests
index 388d6a734..b3e13e308 100755
--- a/shell/hush_test/hush-z_slow/leak_var.tests
+++ b/shell/hush_test/hush-z_slow/leak_var.tests
@@ -42,6 +42,53 @@ while test $i != X; do
42done 42done
43end=`ps -o pid,vsz | grep "^ *$pid "` 43end=`ps -o pid,vsz | grep "^ *$pid "`
44 44
45# Warm up again (I do need it on my machine)
46beg=`ps -o pid,vsz | grep "^ *$pid "`
47i=1
48while test $i != X; do
49 unset t
50 t=111111111111111111111111111111111111111111111111111111111111111111111111
51 export t
52 unset t
53 t=111111111111111111111111111111111111111111111111111111111111111111111111
54 export t
55 unset t
56 t=111111111111111111111111111111111111111111111111111111111111111111111111
57 export t
58 unset t
59 t=111111111111111111111111111111111111111111111111111111111111111111111111
60 export t
61 unset t
62 t=111111111111111111111111111111111111111111111111111111111111111111111111
63 export t
64 i=1$i
65 if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
66 if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi
67 if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi
68 if test $i = 1111111111111111111111111111111111111111111114; then i=5; fi
69 if test $i = 1111111111111111111111111111111111111111111115; then i=6; fi
70 if test $i = 1111111111111111111111111111111111111111111116; then i=7; fi
71 if test $i = 1111111111111111111111111111111111111111111117; then i=8; fi
72 if test $i = 1111111111111111111111111111111111111111111118; then i=9; fi
73 if test $i = 1111111111111111111111111111111111111111111119; then i=a; fi
74 if test $i = 111111111111111111111111111111111111111111111a; then i=b; fi
75 if test $i = 111111111111111111111111111111111111111111111b; then i=c; fi
76 if test $i = 111111111111111111111111111111111111111111111c; then i=d; fi
77 if test $i = 111111111111111111111111111111111111111111111d; then i=e; fi
78 if test $i = 111111111111111111111111111111111111111111111e; then i=f; fi
79 if test $i = 111111111111111111111111111111111111111111111f; then i=g; fi
80 if test $i = 111111111111111111111111111111111111111111111g; then i=h; fi
81 if test $i = 111111111111111111111111111111111111111111111h; then i=i; fi
82 if test $i = 111111111111111111111111111111111111111111111i; then i=j; fi
83 if test $i = 111111111111111111111111111111111111111111111j; then i=X; fi
84done
85end=`ps -o pid,vsz | grep "^ *$pid "`
86if test "$beg" != "$end"; then
87 true echo "vsz grows: $beg -> $end"
88else
89 true echo "vsz does not grow"
90fi
91
45echo "Measuring memory leak..." 92echo "Measuring memory leak..."
46beg=`ps -o pid,vsz | grep "^ *$pid "` 93beg=`ps -o pid,vsz | grep "^ *$pid "`
47i=1 94i=1
diff --git a/shell/hush_test/hush-z_slow/leak_var2.right b/shell/hush_test/hush-z_slow/leak_var2.right
new file mode 100644
index 000000000..7bccc1eef
--- /dev/null
+++ b/shell/hush_test/hush-z_slow/leak_var2.right
@@ -0,0 +1,2 @@
1Measuring memory leak...
2vsz does not grow
diff --git a/shell/hush_test/hush-z_slow/leak_var2.tests b/shell/hush_test/hush-z_slow/leak_var2.tests
new file mode 100755
index 000000000..09f247552
--- /dev/null
+++ b/shell/hush_test/hush-z_slow/leak_var2.tests
@@ -0,0 +1,63 @@
1pid=$$
2
3t=1
4export t
5
6# Warm up
7beg=`ps -o pid,vsz | grep "^ *$pid "`
8i=1
9while test $i != X; do
10 t=111111111111111111111111111111111111111111111111111111111111111111111110$i
11 t=111111111111111111111111111111111111111111111111111111111111111111111111$i true
12 t=111111111111111111111111111111111111111111111111111111111111111111111112$i /bin/true
13 t=111111111111111111111111111111111111111111111111111111111111111111111113$i exec 1>&1
14 i=1$i
15 if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
16 if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi
17 if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi
18 if test $i = 1111111111111111111111111111111111111111111114; then i=X; fi
19done
20end=`ps -o pid,vsz | grep "^ *$pid "`
21
22# Warm up again (I do need it on my machine)
23beg=`ps -o pid,vsz | grep "^ *$pid "`
24i=1
25while test $i != X; do
26 t=111111111111111111111111111111111111111111111111111111111111111111111110$i
27 t=111111111111111111111111111111111111111111111111111111111111111111111111$i true
28 t=111111111111111111111111111111111111111111111111111111111111111111111112$i /bin/true
29 t=111111111111111111111111111111111111111111111111111111111111111111111113$i exec 1>&1
30 i=1$i
31 if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
32 if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi
33 if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi
34 if test $i = 1111111111111111111111111111111111111111111114; then i=X; fi
35done
36end=`ps -o pid,vsz | grep "^ *$pid "`
37if test "$beg" != "$end"; then
38 true echo "vsz grows: $beg -> $end"
39else
40 true echo "vsz does not grow"
41fi
42
43echo "Measuring memory leak..."
44beg=`ps -o pid,vsz | grep "^ *$pid "`
45i=1
46while test $i != X; do
47 t=111111111111111111111111111111111111111111111111111111111111111111111110$i
48 t=111111111111111111111111111111111111111111111111111111111111111111111111$i true
49 t=111111111111111111111111111111111111111111111111111111111111111111111112$i /bin/true
50 t=111111111111111111111111111111111111111111111111111111111111111111111113$i exec 1>&1
51 i=1$i
52 if test $i = 1111111111111111111111111111111111111111111111; then i=2; fi
53 if test $i = 1111111111111111111111111111111111111111111112; then i=3; fi
54 if test $i = 1111111111111111111111111111111111111111111113; then i=4; fi
55 if test $i = 1111111111111111111111111111111111111111111114; then i=X; fi
56done
57end=`ps -o pid,vsz | grep "^ *$pid "`
58
59if test "$beg" != "$end"; then
60 echo "vsz grows: $beg -> $end"
61else
62 echo "vsz does not grow"
63fi