summaryrefslogtreecommitdiff
path: root/src/tests/harden_rand
diff options
context:
space:
mode:
authorjvoisin2019-01-14 19:29:25 +0000
committerGitHub2019-01-14 19:29:25 +0000
commite79f7e3bd992c7f0915ef9afe7afb6d79740527a (patch)
treef881c25694eb00da2331a9ab280ec1c24a5662ab /src/tests/harden_rand
parentc943db586ac46b686b49bdf61d8473e39dd93000 (diff)
Reorganize the testsuite
Splitting the testsuite in several components makes it easier to manage and comprehend. This was also needed some some tests aren't passing on Alpine Linux, but we still want to run as many of them as we can on this platform.
Diffstat (limited to 'src/tests/harden_rand')
-rw-r--r--src/tests/harden_rand/config/config_rand_harden_disabled.ini1
-rw-r--r--src/tests/harden_rand/config/harden_rand.ini1
-rw-r--r--src/tests/harden_rand/disable_handen_rand.phpt22
-rw-r--r--src/tests/harden_rand/harden_mt_rand.phpt22
-rw-r--r--src/tests/harden_rand/harden_mt_rand_range.phpt16
-rw-r--r--src/tests/harden_rand/harden_rand.phpt24
-rw-r--r--src/tests/harden_rand/harden_rand_noargs.phpt62
7 files changed, 148 insertions, 0 deletions
diff --git a/src/tests/harden_rand/config/config_rand_harden_disabled.ini b/src/tests/harden_rand/config/config_rand_harden_disabled.ini
new file mode 100644
index 0000000..b9cd227
--- /dev/null
+++ b/src/tests/harden_rand/config/config_rand_harden_disabled.ini
@@ -0,0 +1 @@
sp.harden_random.disable();
diff --git a/src/tests/harden_rand/config/harden_rand.ini b/src/tests/harden_rand/config/harden_rand.ini
new file mode 100644
index 0000000..89e19be
--- /dev/null
+++ b/src/tests/harden_rand/config/harden_rand.ini
@@ -0,0 +1 @@
sp.harden_random.enable();
diff --git a/src/tests/harden_rand/disable_handen_rand.phpt b/src/tests/harden_rand/disable_handen_rand.phpt
new file mode 100644
index 0000000..70e1382
--- /dev/null
+++ b/src/tests/harden_rand/disable_handen_rand.phpt
@@ -0,0 +1,22 @@
1--TEST--
2Harden rand
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/config_rand_harden_disabled.ini
7--FILE--
8<?php
9srand(0);
10$a = rand(0,100)."\n";
11srand(0);
12$b = rand(0,100)."\n";
13srand(0);
14$c = rand(0,100)."\n";
15if ($a == $b && $a == $c) {
16 echo "win";
17} else {
18 echo "lose";
19}
20?>
21--EXPECT--
22win
diff --git a/src/tests/harden_rand/harden_mt_rand.phpt b/src/tests/harden_rand/harden_mt_rand.phpt
new file mode 100644
index 0000000..da1ac16
--- /dev/null
+++ b/src/tests/harden_rand/harden_mt_rand.phpt
@@ -0,0 +1,22 @@
1--TEST--
2Harden mt_rand
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/harden_rand.ini
7--FILE--
8<?php
9mt_srand(0);
10$a = mt_rand(0,100)."\n";
11$b = mt_rand(0,100)."\n";
12mt_srand(0);
13$c = mt_rand(0,100)."\n";
14$d = mt_rand(0,100)."\n";
15
16if ($a == $c && $b == $d)
17 echo "a:$a, b:$b, c:$c, d:$d\n";
18else
19 echo 'win';
20?>
21--EXPECT--
22win
diff --git a/src/tests/harden_rand/harden_mt_rand_range.phpt b/src/tests/harden_rand/harden_mt_rand_range.phpt
new file mode 100644
index 0000000..0d5a5bf
--- /dev/null
+++ b/src/tests/harden_rand/harden_mt_rand_range.phpt
@@ -0,0 +1,16 @@
1--TEST--
2Harden mt_rand range
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/harden_rand.ini
7--FILE--
8<?php
9for ($i=0; $i <=100; $i++) {
10 if (mt_rand(0,1) > 1) {
11 echo "Failed\n";
12 }
13}
14
15?>
16--EXPECT--
diff --git a/src/tests/harden_rand/harden_rand.phpt b/src/tests/harden_rand/harden_rand.phpt
new file mode 100644
index 0000000..336f5a7
--- /dev/null
+++ b/src/tests/harden_rand/harden_rand.phpt
@@ -0,0 +1,24 @@
1--TEST--
2Harden rand
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/harden_rand.ini
7--FILE--
8<?php
9srand(0);
10$a = rand(0,1000)."\n";
11$b = rand(0,1000)."\n";
12srand(0);
13$c = rand(0,1000)."\n";
14$d = rand(0,1000)."\n";
15
16rand(100,0)."\n";
17
18if ($a == $c && $b == $d)
19 echo "a:$a, b:$b, c:$c, d:$d\n";
20else
21 echo 'win';
22?>
23--EXPECT--
24win
diff --git a/src/tests/harden_rand/harden_rand_noargs.phpt b/src/tests/harden_rand/harden_rand_noargs.phpt
new file mode 100644
index 0000000..dc7d832
--- /dev/null
+++ b/src/tests/harden_rand/harden_rand_noargs.phpt
@@ -0,0 +1,62 @@
1--TEST--
2Harden rand without any arguments
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus")) print "skip"; ?>
5--INI--
6sp.configuration_file={PWD}/config/harden_rand.ini
7We should fix this
8--FILE--
9<?php
10rand();
11mt_rand();
12
13rand(1);
14mt_rand(1);
15
16rand(1, 2);
17mt_rand(1, 2);
18
19rand(2, 1);
20mt_rand(2, 1);
21
22rand(2, 1, 0);
23mt_rand(2, 1, 0);
24
25rand("test", 1);
26mt_rand("test", 1);
27
28rand(1, "test");
29mt_rand(1, "test");
30
31rand(1, 2, "test");
32mt_rand(1, 2, "test");
33
34echo "Everything is fine\n";
35echo "Absolutely everything\n";
36echo 'Even with single quotes';
37?>
38--EXPECTF--
39Warning: rand() expects exactly 2 parameters, 1 given in %s/harden_rand_noargs.php on line %d
40
41Warning: mt_rand() expects exactly 2 parameters, 1 given in %s/harden_rand_noargs.php on line %d
42
43Warning: mt_rand(): max(1) is smaller than min(2) in %s/harden_rand_noargs.php on line %d
44
45Warning: rand() expects exactly 2 parameters, 3 given in %s/harden_rand_noargs.php on line %d
46
47Warning: mt_rand() expects exactly 2 parameters, 3 given in %s/harden_rand_noargs.php on line %d
48
49Warning: rand() expects parameter 1 to be in%s, string given in %s/harden_rand_noargs.php on line %d
50
51Warning: mt_rand() expects parameter 1 to be in%s, string given in %s/harden_rand_noargs.php on line %d
52
53Warning: rand() expects parameter 2 to be in%s, string given in %s/harden_rand_noargs.php on line %d
54
55Warning: mt_rand() expects parameter 2 to be in%s, string given in %s/harden_rand_noargs.php on line %d
56
57Warning: rand() expects exactly 2 parameters, 3 given in %s/harden_rand_noargs.php on line %d
58
59Warning: mt_rand() expects exactly 2 parameters, 3 given in %s/harden_rand_noargs.php on line %d
60Everything is fine
61Absolutely everything
62Even with single quotes