summaryrefslogtreecommitdiff
path: root/src/tests/harden_rand
diff options
context:
space:
mode:
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