Passed
Push — release-2.1 ( 11d92d...b96745 )
by Mathias
04:39
created
Sources/Subs-Post.php 1 patch
Braces   -1 removed lines patch added patch discarded remove patch
@@ -1254,7 +1254,6 @@
 block discarded – undo
1254 1254
 
1255 1255
 		return array($charset, $string, 'base64');
1256 1256
 	}
1257
-
1258 1257
 	else
1259 1258
 		return array($charset, $string, '7bit');
1260 1259
 }
Please login to merge, or discard this patch.
Sources/ManageSmileys.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1997,7 +1997,7 @@
 block discarded – undo
1997 1997
 	// Remove anything that isn't actually new from our list of files
1998 1998
 	foreach ($to_unset as $key => $ids)
1999 1999
 	{
2000
-		if (array_reduce($ids, function ($carry, $item) { return $carry * $item; }, true) == true)
2000
+		if (array_reduce($ids, function($carry, $item) { return $carry * $item; }, true) == true)
2001 2001
 			unset($smiley_files[$key]);
2002 2002
 	}
2003 2003
 
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1997,7 +1997,9 @@
 block discarded – undo
1997 1997
 	// Remove anything that isn't actually new from our list of files
1998 1998
 	foreach ($to_unset as $key => $ids)
1999 1999
 	{
2000
-		if (array_reduce($ids, function ($carry, $item) { return $carry * $item; }, true) == true)
2000
+		if (array_reduce($ids, function ($carry, $item)
2001
+		{
2002
+return $carry * $item; }, true) == true)
2001 2003
 			unset($smiley_files[$key]);
2002 2004
 	}
2003 2005
 
Please login to merge, or discard this patch.
Sources/Class-Punycode.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -145,7 +145,7 @@  discard block
 block discarded – undo
145 145
 				}
146 146
 				if ($c === $n) {
147 147
 					$q = $delta;
148
-					for ($k = static::BASE;; $k += static::BASE) {
148
+					for ($k = static::BASE; ; $k += static::BASE) {
149 149
 						$t = $this->calculateThreshold($k, $bias);
150 150
 						if ($q < $t) {
151 151
 							break;
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 			$oldi = $i;
228 228
 			$w = 1;
229 229
 
230
-			for ($k = static::BASE;; $k += static::BASE)
230
+			for ($k = static::BASE; ; $k += static::BASE)
231 231
 			{
232 232
 				$digit = static::$decodeTable[$input[$pos++]];
233 233
 				$i = $i + ($digit * $w);
Please login to merge, or discard this patch.
Braces   +20 added lines, -10 removed lines patch added patch discarded remove patch
@@ -94,7 +94,8 @@  discard block
 block discarded – undo
94 94
 	{
95 95
 		$input = mb_strtolower($input, $this->encoding);
96 96
 		$parts = explode('.', $input);
97
-		foreach ($parts as &$part) {
97
+		foreach ($parts as &$part)
98
+		{
98 99
 			$part = $this->encodePart($part);
99 100
 		}
100 101
 		$output = implode('.', $parts);
@@ -119,13 +120,16 @@  discard block
 block discarded – undo
119 120
 		$h = $b = count($codePoints['basic']);
120 121
 
121 122
 		$output = '';
122
-		foreach ($codePoints['basic'] as $code) {
123
+		foreach ($codePoints['basic'] as $code)
124
+		{
123 125
 			$output .= $this->codePointToChar($code);
124 126
 		}
125
-		if ($input === $output) {
127
+		if ($input === $output)
128
+		{
126 129
 			return $output;
127 130
 		}
128
-		if ($b > 0) {
131
+		if ($b > 0)
132
+		{
129 133
 			$output .= static::DELIMITER;
130 134
 		}
131 135
 
@@ -134,20 +138,26 @@  discard block
 block discarded – undo
134 138
 
135 139
 		$i = 0;
136 140
 		$length = mb_strlen($input, $this->encoding);
137
-		while ($h < $length) {
141
+		while ($h < $length)
142
+		{
138 143
 			$m = $codePoints['nonBasic'][$i++];
139 144
 			$delta = $delta + ($m - $n) * ($h + 1);
140 145
 			$n = $m;
141 146
 
142
-			foreach ($codePoints['all'] as $c) {
143
-				if ($c < $n || $c < static::INITIAL_N) {
147
+			foreach ($codePoints['all'] as $c)
148
+			{
149
+				if ($c < $n || $c < static::INITIAL_N)
150
+				{
144 151
 					$delta++;
145 152
 				}
146
-				if ($c === $n) {
153
+				if ($c === $n)
154
+				{
147 155
 					$q = $delta;
148
-					for ($k = static::BASE;; $k += static::BASE) {
156
+					for ($k = static::BASE;; $k += static::BASE)
157
+					{
149 158
 						$t = $this->calculateThreshold($k, $bias);
150
-						if ($q < $t) {
159
+						if ($q < $t)
160
+						{
151 161
 							break;
152 162
 						}
153 163
 
Please login to merge, or discard this patch.
Sources/random_compat/random_bytes_mcrypt.php 2 patches
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -27,53 +27,53 @@
 block discarded – undo
27 27
  */
28 28
 
29 29
 if (!is_callable('random_bytes')) {
30
-    /**
31
-     * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
32
-     *
33
-     * @ref https://bugs.php.net/bug.php?id=55169
34
-     * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
35
-     *
36
-     * @param int $bytes
37
-     *
38
-     * @throws Exception
39
-     *
40
-     * @return string
41
-     */
42
-    function random_bytes($bytes)
43
-    {
44
-        try {
45
-            /** @var int $bytes */
46
-            $bytes = RandomCompat_intval($bytes);
47
-        } catch (TypeError $ex) {
48
-            throw new TypeError(
49
-                'random_bytes(): $bytes must be an integer'
50
-            );
51
-        }
30
+	/**
31
+	 * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
32
+	 *
33
+	 * @ref https://bugs.php.net/bug.php?id=55169
34
+	 * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
35
+	 *
36
+	 * @param int $bytes
37
+	 *
38
+	 * @throws Exception
39
+	 *
40
+	 * @return string
41
+	 */
42
+	function random_bytes($bytes)
43
+	{
44
+		try {
45
+			/** @var int $bytes */
46
+			$bytes = RandomCompat_intval($bytes);
47
+		} catch (TypeError $ex) {
48
+			throw new TypeError(
49
+				'random_bytes(): $bytes must be an integer'
50
+			);
51
+		}
52 52
 
53
-        if ($bytes < 1) {
54
-            throw new Error(
55
-                'Length must be greater than 0'
56
-            );
57
-        }
53
+		if ($bytes < 1) {
54
+			throw new Error(
55
+				'Length must be greater than 0'
56
+			);
57
+		}
58 58
 
59
-        /** @var string|bool $buf */
60
-        $buf = @mcrypt_create_iv((int) $bytes, (int) MCRYPT_DEV_URANDOM);
61
-        if (
62
-            is_string($buf)
63
-                &&
64
-            RandomCompat_strlen($buf) === $bytes
65
-        ) {
66
-            /**
67
-             * Return our random entropy buffer here:
68
-             */
69
-            return $buf;
70
-        }
59
+		/** @var string|bool $buf */
60
+		$buf = @mcrypt_create_iv((int) $bytes, (int) MCRYPT_DEV_URANDOM);
61
+		if (
62
+			is_string($buf)
63
+				&&
64
+			RandomCompat_strlen($buf) === $bytes
65
+		) {
66
+			/**
67
+			 * Return our random entropy buffer here:
68
+			 */
69
+			return $buf;
70
+		}
71 71
 
72
-        /**
73
-         * If we reach here, PHP has failed us.
74
-         */
75
-        throw new Exception(
76
-            'Could not gather sufficient random data'
77
-        );
78
-    }
72
+		/**
73
+		 * If we reach here, PHP has failed us.
74
+		 */
75
+		throw new Exception(
76
+			'Could not gather sufficient random data'
77
+		);
78
+	}
79 79
 }
Please login to merge, or discard this patch.
Braces   +9 added lines, -4 removed lines patch added patch discarded remove patch
@@ -26,7 +26,8 @@  discard block
 block discarded – undo
26 26
  * SOFTWARE.
27 27
  */
28 28
 
29
-if (!is_callable('random_bytes')) {
29
+if (!is_callable('random_bytes'))
30
+{
30 31
     /**
31 32
      * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
32 33
      *
@@ -41,16 +42,20 @@  discard block
 block discarded – undo
41 42
      */
42 43
     function random_bytes($bytes)
43 44
     {
44
-        try {
45
+        try
46
+        {
45 47
             /** @var int $bytes */
46 48
             $bytes = RandomCompat_intval($bytes);
47
-        } catch (TypeError $ex) {
49
+        }
50
+        catch (TypeError $ex)
51
+        {
48 52
             throw new TypeError(
49 53
                 'random_bytes(): $bytes must be an integer'
50 54
             );
51 55
         }
52 56
 
53
-        if ($bytes < 1) {
57
+        if ($bytes < 1)
58
+        {
54 59
             throw new Error(
55 60
                 'Length must be greater than 0'
56 61
             );
Please login to merge, or discard this patch.
Sources/random_compat/random_bytes_com_dotnet.php 2 patches
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -27,65 +27,65 @@
 block discarded – undo
27 27
  */
28 28
 
29 29
 if (!is_callable('random_bytes')) {
30
-    /**
31
-     * Windows with PHP < 5.3.0 will not have the function
32
-     * openssl_random_pseudo_bytes() available, so let's use
33
-     * CAPICOM to work around this deficiency.
34
-     *
35
-     * @param int $bytes
36
-     *
37
-     * @throws Exception
38
-     *
39
-     * @return string
40
-     */
41
-    function random_bytes($bytes)
42
-    {
43
-        try {
44
-            /** @var int $bytes */
45
-            $bytes = RandomCompat_intval($bytes);
46
-        } catch (TypeError $ex) {
47
-            throw new TypeError(
48
-                'random_bytes(): $bytes must be an integer'
49
-            );
50
-        }
30
+	/**
31
+	 * Windows with PHP < 5.3.0 will not have the function
32
+	 * openssl_random_pseudo_bytes() available, so let's use
33
+	 * CAPICOM to work around this deficiency.
34
+	 *
35
+	 * @param int $bytes
36
+	 *
37
+	 * @throws Exception
38
+	 *
39
+	 * @return string
40
+	 */
41
+	function random_bytes($bytes)
42
+	{
43
+		try {
44
+			/** @var int $bytes */
45
+			$bytes = RandomCompat_intval($bytes);
46
+		} catch (TypeError $ex) {
47
+			throw new TypeError(
48
+				'random_bytes(): $bytes must be an integer'
49
+			);
50
+		}
51 51
 
52
-        if ($bytes < 1) {
53
-            throw new Error(
54
-                'Length must be greater than 0'
55
-            );
56
-        }
52
+		if ($bytes < 1) {
53
+			throw new Error(
54
+				'Length must be greater than 0'
55
+			);
56
+		}
57 57
 
58
-        /** @var string $buf */
59
-        $buf = '';
60
-        if (!class_exists('COM')) {
61
-            throw new Error(
62
-                'COM does not exist'
63
-            );
64
-        }
65
-        /** @var COM $util */
66
-        $util = new COM('CAPICOM.Utilities.1');
67
-        $execCount = 0;
58
+		/** @var string $buf */
59
+		$buf = '';
60
+		if (!class_exists('COM')) {
61
+			throw new Error(
62
+				'COM does not exist'
63
+			);
64
+		}
65
+		/** @var COM $util */
66
+		$util = new COM('CAPICOM.Utilities.1');
67
+		$execCount = 0;
68 68
 
69
-        /**
70
-         * Let's not let it loop forever. If we run N times and fail to
71
-         * get N bytes of random data, then CAPICOM has failed us.
72
-         */
73
-        do {
74
-            $buf .= base64_decode((string) $util->GetRandom($bytes, 0));
75
-            if (RandomCompat_strlen($buf) >= $bytes) {
76
-                /**
77
-                 * Return our random entropy buffer here:
78
-                 */
79
-                return (string) RandomCompat_substr($buf, 0, $bytes);
80
-            }
81
-            ++$execCount;
82
-        } while ($execCount < $bytes);
69
+		/**
70
+		 * Let's not let it loop forever. If we run N times and fail to
71
+		 * get N bytes of random data, then CAPICOM has failed us.
72
+		 */
73
+		do {
74
+			$buf .= base64_decode((string) $util->GetRandom($bytes, 0));
75
+			if (RandomCompat_strlen($buf) >= $bytes) {
76
+				/**
77
+				 * Return our random entropy buffer here:
78
+				 */
79
+				return (string) RandomCompat_substr($buf, 0, $bytes);
80
+			}
81
+			++$execCount;
82
+		} while ($execCount < $bytes);
83 83
 
84
-        /**
85
-         * If we reach here, PHP has failed us.
86
-         */
87
-        throw new Exception(
88
-            'Could not gather sufficient random data'
89
-        );
90
-    }
84
+		/**
85
+		 * If we reach here, PHP has failed us.
86
+		 */
87
+		throw new Exception(
88
+			'Could not gather sufficient random data'
89
+		);
90
+	}
91 91
 }
92 92
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +13 added lines, -6 removed lines patch added patch discarded remove patch
@@ -26,7 +26,8 @@  discard block
 block discarded – undo
26 26
  * SOFTWARE.
27 27
  */
28 28
 
29
-if (!is_callable('random_bytes')) {
29
+if (!is_callable('random_bytes'))
30
+{
30 31
     /**
31 32
      * Windows with PHP < 5.3.0 will not have the function
32 33
      * openssl_random_pseudo_bytes() available, so let's use
@@ -40,16 +41,20 @@  discard block
 block discarded – undo
40 41
      */
41 42
     function random_bytes($bytes)
42 43
     {
43
-        try {
44
+        try
45
+        {
44 46
             /** @var int $bytes */
45 47
             $bytes = RandomCompat_intval($bytes);
46
-        } catch (TypeError $ex) {
48
+        }
49
+        catch (TypeError $ex)
50
+        {
47 51
             throw new TypeError(
48 52
                 'random_bytes(): $bytes must be an integer'
49 53
             );
50 54
         }
51 55
 
52
-        if ($bytes < 1) {
56
+        if ($bytes < 1)
57
+        {
53 58
             throw new Error(
54 59
                 'Length must be greater than 0'
55 60
             );
@@ -57,7 +62,8 @@  discard block
 block discarded – undo
57 62
 
58 63
         /** @var string $buf */
59 64
         $buf = '';
60
-        if (!class_exists('COM')) {
65
+        if (!class_exists('COM'))
66
+        {
61 67
             throw new Error(
62 68
                 'COM does not exist'
63 69
             );
@@ -72,7 +78,8 @@  discard block
 block discarded – undo
72 78
          */
73 79
         do {
74 80
             $buf .= base64_decode((string) $util->GetRandom($bytes, 0));
75
-            if (RandomCompat_strlen($buf) >= $bytes) {
81
+            if (RandomCompat_strlen($buf) >= $bytes)
82
+            {
76 83
                 /**
77 84
                  * Return our random entropy buffer here:
78 85
                  */
Please login to merge, or discard this patch.
Sources/random_compat/random_bytes_libsodium_legacy.php 2 patches
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -27,67 +27,67 @@
 block discarded – undo
27 27
  */
28 28
 
29 29
 if (!is_callable('random_bytes')) {
30
-    /**
31
-     * If the libsodium PHP extension is loaded, we'll use it above any other
32
-     * solution.
33
-     *
34
-     * libsodium-php project:
35
-     * @ref https://github.com/jedisct1/libsodium-php
36
-     *
37
-     * @param int $bytes
38
-     *
39
-     * @throws Exception
40
-     *
41
-     * @return string
42
-     */
43
-    function random_bytes($bytes)
44
-    {
45
-        try {
46
-            /** @var int $bytes */
47
-            $bytes = RandomCompat_intval($bytes);
48
-        } catch (TypeError $ex) {
49
-            throw new TypeError(
50
-                'random_bytes(): $bytes must be an integer'
51
-            );
52
-        }
30
+	/**
31
+	 * If the libsodium PHP extension is loaded, we'll use it above any other
32
+	 * solution.
33
+	 *
34
+	 * libsodium-php project:
35
+	 * @ref https://github.com/jedisct1/libsodium-php
36
+	 *
37
+	 * @param int $bytes
38
+	 *
39
+	 * @throws Exception
40
+	 *
41
+	 * @return string
42
+	 */
43
+	function random_bytes($bytes)
44
+	{
45
+		try {
46
+			/** @var int $bytes */
47
+			$bytes = RandomCompat_intval($bytes);
48
+		} catch (TypeError $ex) {
49
+			throw new TypeError(
50
+				'random_bytes(): $bytes must be an integer'
51
+			);
52
+		}
53 53
 
54
-        if ($bytes < 1) {
55
-            throw new Error(
56
-                'Length must be greater than 0'
57
-            );
58
-        }
54
+		if ($bytes < 1) {
55
+			throw new Error(
56
+				'Length must be greater than 0'
57
+			);
58
+		}
59 59
 
60
-        /**
61
-         * @var string
62
-         */
63
-        $buf = '';
60
+		/**
61
+		 * @var string
62
+		 */
63
+		$buf = '';
64 64
 
65
-        /**
66
-         * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
67
-         * generated in one invocation.
68
-         */
69
-        if ($bytes > 2147483647) {
70
-            for ($i = 0; $i < $bytes; $i += 1073741824) {
71
-                $n = ($bytes - $i) > 1073741824
72
-                    ? 1073741824
73
-                    : $bytes - $i;
74
-                $buf .= Sodium::randombytes_buf((int) $n);
75
-            }
76
-        } else {
77
-            $buf .= Sodium::randombytes_buf((int) $bytes);
78
-        }
65
+		/**
66
+		 * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
67
+		 * generated in one invocation.
68
+		 */
69
+		if ($bytes > 2147483647) {
70
+			for ($i = 0; $i < $bytes; $i += 1073741824) {
71
+				$n = ($bytes - $i) > 1073741824
72
+					? 1073741824
73
+					: $bytes - $i;
74
+				$buf .= Sodium::randombytes_buf((int) $n);
75
+			}
76
+		} else {
77
+			$buf .= Sodium::randombytes_buf((int) $bytes);
78
+		}
79 79
 
80
-        if (is_string($buf)) {
81
-            if (RandomCompat_strlen($buf) === $bytes) {
82
-                return $buf;
83
-            }
84
-        }
80
+		if (is_string($buf)) {
81
+			if (RandomCompat_strlen($buf) === $bytes) {
82
+				return $buf;
83
+			}
84
+		}
85 85
 
86
-        /**
87
-         * If we reach here, PHP has failed us.
88
-         */
89
-        throw new Exception(
90
-            'Could not gather sufficient random data'
91
-        );
92
-    }
86
+		/**
87
+		 * If we reach here, PHP has failed us.
88
+		 */
89
+		throw new Exception(
90
+			'Could not gather sufficient random data'
91
+		);
92
+	}
93 93
 }
Please login to merge, or discard this patch.
Braces   +20 added lines, -9 removed lines patch added patch discarded remove patch
@@ -26,7 +26,8 @@  discard block
 block discarded – undo
26 26
  * SOFTWARE.
27 27
  */
28 28
 
29
-if (!is_callable('random_bytes')) {
29
+if (!is_callable('random_bytes'))
30
+{
30 31
     /**
31 32
      * If the libsodium PHP extension is loaded, we'll use it above any other
32 33
      * solution.
@@ -42,16 +43,20 @@  discard block
 block discarded – undo
42 43
      */
43 44
     function random_bytes($bytes)
44 45
     {
45
-        try {
46
+        try
47
+        {
46 48
             /** @var int $bytes */
47 49
             $bytes = RandomCompat_intval($bytes);
48
-        } catch (TypeError $ex) {
50
+        }
51
+        catch (TypeError $ex)
52
+        {
49 53
             throw new TypeError(
50 54
                 'random_bytes(): $bytes must be an integer'
51 55
             );
52 56
         }
53 57
 
54
-        if ($bytes < 1) {
58
+        if ($bytes < 1)
59
+        {
55 60
             throw new Error(
56 61
                 'Length must be greater than 0'
57 62
             );
@@ -66,19 +71,25 @@  discard block
 block discarded – undo
66 71
          * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
67 72
          * generated in one invocation.
68 73
          */
69
-        if ($bytes > 2147483647) {
70
-            for ($i = 0; $i < $bytes; $i += 1073741824) {
74
+        if ($bytes > 2147483647)
75
+        {
76
+            for ($i = 0; $i < $bytes; $i += 1073741824)
77
+            {
71 78
                 $n = ($bytes - $i) > 1073741824
72 79
                     ? 1073741824
73 80
                     : $bytes - $i;
74 81
                 $buf .= Sodium::randombytes_buf((int) $n);
75 82
             }
76
-        } else {
83
+        }
84
+        else
85
+        {
77 86
             $buf .= Sodium::randombytes_buf((int) $bytes);
78 87
         }
79 88
 
80
-        if (is_string($buf)) {
81
-            if (RandomCompat_strlen($buf) === $bytes) {
89
+        if (is_string($buf))
90
+        {
91
+            if (RandomCompat_strlen($buf) === $bytes)
92
+            {
82 93
                 return $buf;
83 94
             }
84 95
         }
Please login to merge, or discard this patch.
Sources/random_compat/random.php 2 patches
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -30,26 +30,26 @@  discard block
 block discarded – undo
30 30
  */
31 31
 
32 32
 if (!defined('PHP_VERSION_ID')) {
33
-    // This constant was introduced in PHP 5.2.7
34
-    $RandomCompatversion = array_map('intval', explode('.', PHP_VERSION));
35
-    define(
36
-        'PHP_VERSION_ID',
37
-        $RandomCompatversion[0] * 10000
38
-        + $RandomCompatversion[1] * 100
39
-        + $RandomCompatversion[2]
40
-    );
41
-    $RandomCompatversion = null;
33
+	// This constant was introduced in PHP 5.2.7
34
+	$RandomCompatversion = array_map('intval', explode('.', PHP_VERSION));
35
+	define(
36
+		'PHP_VERSION_ID',
37
+		$RandomCompatversion[0] * 10000
38
+		+ $RandomCompatversion[1] * 100
39
+		+ $RandomCompatversion[2]
40
+	);
41
+	$RandomCompatversion = null;
42 42
 }
43 43
 
44 44
 /**
45 45
  * PHP 7.0.0 and newer have these functions natively.
46 46
  */
47 47
 if (PHP_VERSION_ID >= 70000) {
48
-    return;
48
+	return;
49 49
 }
50 50
 
51 51
 if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
52
-    define('RANDOM_COMPAT_READ_BUFFER', 8);
52
+	define('RANDOM_COMPAT_READ_BUFFER', 8);
53 53
 }
54 54
 
55 55
 $RandomCompatDIR = dirname(__FILE__);
@@ -59,167 +59,167 @@  discard block
 block discarded – undo
59 59
 require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'error_polyfill.php';
60 60
 
61 61
 if (!is_callable('random_bytes')) {
62
-    /**
63
-     * PHP 5.2.0 - 5.6.x way to implement random_bytes()
64
-     *
65
-     * We use conditional statements here to define the function in accordance
66
-     * to the operating environment. It's a micro-optimization.
67
-     *
68
-     * In order of preference:
69
-     *   1. Use libsodium if available.
70
-     *   2. fread() /dev/urandom if available (never on Windows)
71
-     *   3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM)
72
-     *   4. COM('CAPICOM.Utilities.1')->GetRandom()
73
-     *
74
-     * See RATIONALE.md for our reasoning behind this particular order
75
-     */
76
-    if (extension_loaded('libsodium')) {
77
-        // See random_bytes_libsodium.php
78
-        if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) {
79
-            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium.php';
80
-        } elseif (method_exists('Sodium', 'randombytes_buf')) {
81
-            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium_legacy.php';
82
-        }
83
-    }
84
-
85
-    /**
86
-     * Reading directly from /dev/urandom:
87
-     */
88
-    if (DIRECTORY_SEPARATOR === '/') {
89
-        // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
90
-        // way to exclude Windows.
91
-        $RandomCompatUrandom = true;
92
-        $RandomCompat_basedir = ini_get('open_basedir');
93
-
94
-        if (!empty($RandomCompat_basedir)) {
95
-            $RandomCompat_open_basedir = explode(
96
-                PATH_SEPARATOR,
97
-                strtolower($RandomCompat_basedir)
98
-            );
99
-            $RandomCompatUrandom = (array() !== array_intersect(
100
-                array('/dev', '/dev/', '/dev/urandom'),
101
-                $RandomCompat_open_basedir
102
-            ));
103
-            $RandomCompat_open_basedir = null;
104
-        }
105
-
106
-        if (
107
-            !is_callable('random_bytes')
108
-            &&
109
-            $RandomCompatUrandom
110
-            &&
111
-            @is_readable('/dev/urandom')
112
-        ) {
113
-            // Error suppression on is_readable() in case of an open_basedir
114
-            // or safe_mode failure. All we care about is whether or not we
115
-            // can read it at this point. If the PHP environment is going to
116
-            // panic over trying to see if the file can be read in the first
117
-            // place, that is not helpful to us here.
118
-
119
-            // See random_bytes_dev_urandom.php
120
-            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_dev_urandom.php';
121
-        }
122
-        // Unset variables after use
123
-        $RandomCompat_basedir = null;
124
-    } else {
125
-        $RandomCompatUrandom = false;
126
-    }
127
-
128
-    /**
129
-     * mcrypt_create_iv()
130
-     *
131
-     * We only want to use mcypt_create_iv() if:
132
-     *
133
-     * - random_bytes() hasn't already been defined
134
-     * - the mcrypt extensions is loaded
135
-     * - One of these two conditions is true:
136
-     *   - We're on Windows (DIRECTORY_SEPARATOR !== '/')
137
-     *   - We're not on Windows and /dev/urandom is readabale
138
-     *     (i.e. we're not in a chroot jail)
139
-     * - Special case:
140
-     *   - If we're not on Windows, but the PHP version is between
141
-     *     5.6.10 and 5.6.12, we don't want to use mcrypt. It will
142
-     *     hang indefinitely. This is bad.
143
-     *   - If we're on Windows, we want to use PHP >= 5.3.7 or else
144
-     *     we get insufficient entropy errors.
145
-     */
146
-    if (
147
-        !is_callable('random_bytes')
148
-        &&
149
-        // Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be.
150
-        (DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307)
151
-        &&
152
-        // Prevent this code from hanging indefinitely on non-Windows;
153
-        // see https://bugs.php.net/bug.php?id=69833
154
-        (
155
-            DIRECTORY_SEPARATOR !== '/' ||
156
-            (PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613)
157
-        )
158
-        &&
159
-        extension_loaded('mcrypt')
160
-    ) {
161
-        // See random_bytes_mcrypt.php
162
-        require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_mcrypt.php';
163
-    }
164
-    $RandomCompatUrandom = null;
165
-
166
-    /**
167
-     * This is a Windows-specific fallback, for when the mcrypt extension
168
-     * isn't loaded.
169
-     */
170
-    if (
171
-        !is_callable('random_bytes')
172
-        &&
173
-        extension_loaded('com_dotnet')
174
-        &&
175
-        class_exists('COM')
176
-    ) {
177
-        $RandomCompat_disabled_classes = preg_split(
178
-            '#\s*,\s*#',
179
-            strtolower(ini_get('disable_classes'))
180
-        );
181
-
182
-        if (!in_array('com', $RandomCompat_disabled_classes)) {
183
-            try {
184
-                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
185
-                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
186
-                    // See random_bytes_com_dotnet.php
187
-                    require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_com_dotnet.php';
188
-                }
189
-            } catch (com_exception $e) {
190
-                // Don't try to use it.
191
-            }
192
-        }
193
-        $RandomCompat_disabled_classes = null;
194
-        $RandomCompatCOMtest = null;
195
-    }
196
-
197
-    /**
198
-     * throw new Exception
199
-     */
200
-    if (!is_callable('random_bytes')) {
201
-        /**
202
-         * We don't have any more options, so let's throw an exception right now
203
-         * and hope the developer won't let it fail silently.
204
-         *
205
-         * @param mixed $length
206
-         * @psalm-suppress InvalidReturnType
207
-         * @throws Exception
208
-         * @return string
209
-         */
210
-        function random_bytes($length)
211
-        {
212
-            unset($length); // Suppress "variable not used" warnings.
213
-            throw new Exception(
214
-                'There is no suitable CSPRNG installed on your system'
215
-            );
216
-            return '';
217
-        }
218
-    }
62
+	/**
63
+	 * PHP 5.2.0 - 5.6.x way to implement random_bytes()
64
+	 *
65
+	 * We use conditional statements here to define the function in accordance
66
+	 * to the operating environment. It's a micro-optimization.
67
+	 *
68
+	 * In order of preference:
69
+	 *   1. Use libsodium if available.
70
+	 *   2. fread() /dev/urandom if available (never on Windows)
71
+	 *   3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM)
72
+	 *   4. COM('CAPICOM.Utilities.1')->GetRandom()
73
+	 *
74
+	 * See RATIONALE.md for our reasoning behind this particular order
75
+	 */
76
+	if (extension_loaded('libsodium')) {
77
+		// See random_bytes_libsodium.php
78
+		if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) {
79
+			require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium.php';
80
+		} elseif (method_exists('Sodium', 'randombytes_buf')) {
81
+			require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium_legacy.php';
82
+		}
83
+	}
84
+
85
+	/**
86
+	 * Reading directly from /dev/urandom:
87
+	 */
88
+	if (DIRECTORY_SEPARATOR === '/') {
89
+		// DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
90
+		// way to exclude Windows.
91
+		$RandomCompatUrandom = true;
92
+		$RandomCompat_basedir = ini_get('open_basedir');
93
+
94
+		if (!empty($RandomCompat_basedir)) {
95
+			$RandomCompat_open_basedir = explode(
96
+				PATH_SEPARATOR,
97
+				strtolower($RandomCompat_basedir)
98
+			);
99
+			$RandomCompatUrandom = (array() !== array_intersect(
100
+				array('/dev', '/dev/', '/dev/urandom'),
101
+				$RandomCompat_open_basedir
102
+			));
103
+			$RandomCompat_open_basedir = null;
104
+		}
105
+
106
+		if (
107
+			!is_callable('random_bytes')
108
+			&&
109
+			$RandomCompatUrandom
110
+			&&
111
+			@is_readable('/dev/urandom')
112
+		) {
113
+			// Error suppression on is_readable() in case of an open_basedir
114
+			// or safe_mode failure. All we care about is whether or not we
115
+			// can read it at this point. If the PHP environment is going to
116
+			// panic over trying to see if the file can be read in the first
117
+			// place, that is not helpful to us here.
118
+
119
+			// See random_bytes_dev_urandom.php
120
+			require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_dev_urandom.php';
121
+		}
122
+		// Unset variables after use
123
+		$RandomCompat_basedir = null;
124
+	} else {
125
+		$RandomCompatUrandom = false;
126
+	}
127
+
128
+	/**
129
+	 * mcrypt_create_iv()
130
+	 *
131
+	 * We only want to use mcypt_create_iv() if:
132
+	 *
133
+	 * - random_bytes() hasn't already been defined
134
+	 * - the mcrypt extensions is loaded
135
+	 * - One of these two conditions is true:
136
+	 *   - We're on Windows (DIRECTORY_SEPARATOR !== '/')
137
+	 *   - We're not on Windows and /dev/urandom is readabale
138
+	 *     (i.e. we're not in a chroot jail)
139
+	 * - Special case:
140
+	 *   - If we're not on Windows, but the PHP version is between
141
+	 *     5.6.10 and 5.6.12, we don't want to use mcrypt. It will
142
+	 *     hang indefinitely. This is bad.
143
+	 *   - If we're on Windows, we want to use PHP >= 5.3.7 or else
144
+	 *     we get insufficient entropy errors.
145
+	 */
146
+	if (
147
+		!is_callable('random_bytes')
148
+		&&
149
+		// Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be.
150
+		(DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307)
151
+		&&
152
+		// Prevent this code from hanging indefinitely on non-Windows;
153
+		// see https://bugs.php.net/bug.php?id=69833
154
+		(
155
+			DIRECTORY_SEPARATOR !== '/' ||
156
+			(PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613)
157
+		)
158
+		&&
159
+		extension_loaded('mcrypt')
160
+	) {
161
+		// See random_bytes_mcrypt.php
162
+		require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_mcrypt.php';
163
+	}
164
+	$RandomCompatUrandom = null;
165
+
166
+	/**
167
+	 * This is a Windows-specific fallback, for when the mcrypt extension
168
+	 * isn't loaded.
169
+	 */
170
+	if (
171
+		!is_callable('random_bytes')
172
+		&&
173
+		extension_loaded('com_dotnet')
174
+		&&
175
+		class_exists('COM')
176
+	) {
177
+		$RandomCompat_disabled_classes = preg_split(
178
+			'#\s*,\s*#',
179
+			strtolower(ini_get('disable_classes'))
180
+		);
181
+
182
+		if (!in_array('com', $RandomCompat_disabled_classes)) {
183
+			try {
184
+				$RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
185
+				if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
186
+					// See random_bytes_com_dotnet.php
187
+					require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_com_dotnet.php';
188
+				}
189
+			} catch (com_exception $e) {
190
+				// Don't try to use it.
191
+			}
192
+		}
193
+		$RandomCompat_disabled_classes = null;
194
+		$RandomCompatCOMtest = null;
195
+	}
196
+
197
+	/**
198
+	 * throw new Exception
199
+	 */
200
+	if (!is_callable('random_bytes')) {
201
+		/**
202
+		 * We don't have any more options, so let's throw an exception right now
203
+		 * and hope the developer won't let it fail silently.
204
+		 *
205
+		 * @param mixed $length
206
+		 * @psalm-suppress InvalidReturnType
207
+		 * @throws Exception
208
+		 * @return string
209
+		 */
210
+		function random_bytes($length)
211
+		{
212
+			unset($length); // Suppress "variable not used" warnings.
213
+			throw new Exception(
214
+				'There is no suitable CSPRNG installed on your system'
215
+			);
216
+			return '';
217
+		}
218
+	}
219 219
 }
220 220
 
221 221
 if (!is_callable('random_int')) {
222
-    require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_int.php';
222
+	require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_int.php';
223 223
 }
224 224
 
225 225
 $RandomCompatDIR = null;
Please login to merge, or discard this patch.
Braces   +35 added lines, -16 removed lines patch added patch discarded remove patch
@@ -29,7 +29,8 @@  discard block
 block discarded – undo
29 29
  * SOFTWARE.
30 30
  */
31 31
 
32
-if (!defined('PHP_VERSION_ID')) {
32
+if (!defined('PHP_VERSION_ID'))
33
+{
33 34
     // This constant was introduced in PHP 5.2.7
34 35
     $RandomCompatversion = array_map('intval', explode('.', PHP_VERSION));
35 36
     define(
@@ -44,11 +45,13 @@  discard block
 block discarded – undo
44 45
 /**
45 46
  * PHP 7.0.0 and newer have these functions natively.
46 47
  */
47
-if (PHP_VERSION_ID >= 70000) {
48
+if (PHP_VERSION_ID >= 70000)
49
+{
48 50
     return;
49 51
 }
50 52
 
51
-if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
53
+if (!defined('RANDOM_COMPAT_READ_BUFFER'))
54
+{
52 55
     define('RANDOM_COMPAT_READ_BUFFER', 8);
53 56
 }
54 57
 
@@ -58,7 +61,8 @@  discard block
 block discarded – undo
58 61
 require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'cast_to_int.php';
59 62
 require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'error_polyfill.php';
60 63
 
61
-if (!is_callable('random_bytes')) {
64
+if (!is_callable('random_bytes'))
65
+{
62 66
     /**
63 67
      * PHP 5.2.0 - 5.6.x way to implement random_bytes()
64 68
      *
@@ -73,11 +77,15 @@  discard block
 block discarded – undo
73 77
      *
74 78
      * See RATIONALE.md for our reasoning behind this particular order
75 79
      */
76
-    if (extension_loaded('libsodium')) {
80
+    if (extension_loaded('libsodium'))
81
+    {
77 82
         // See random_bytes_libsodium.php
78
-        if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) {
83
+        if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf'))
84
+        {
79 85
             require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium.php';
80
-        } elseif (method_exists('Sodium', 'randombytes_buf')) {
86
+        }
87
+        elseif (method_exists('Sodium', 'randombytes_buf'))
88
+        {
81 89
             require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium_legacy.php';
82 90
         }
83 91
     }
@@ -85,13 +93,15 @@  discard block
 block discarded – undo
85 93
     /**
86 94
      * Reading directly from /dev/urandom:
87 95
      */
88
-    if (DIRECTORY_SEPARATOR === '/') {
96
+    if (DIRECTORY_SEPARATOR === '/')
97
+    {
89 98
         // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
90 99
         // way to exclude Windows.
91 100
         $RandomCompatUrandom = true;
92 101
         $RandomCompat_basedir = ini_get('open_basedir');
93 102
 
94
-        if (!empty($RandomCompat_basedir)) {
103
+        if (!empty($RandomCompat_basedir))
104
+        {
95 105
             $RandomCompat_open_basedir = explode(
96 106
                 PATH_SEPARATOR,
97 107
                 strtolower($RandomCompat_basedir)
@@ -121,7 +131,9 @@  discard block
 block discarded – undo
121 131
         }
122 132
         // Unset variables after use
123 133
         $RandomCompat_basedir = null;
124
-    } else {
134
+    }
135
+    else
136
+    {
125 137
         $RandomCompatUrandom = false;
126 138
     }
127 139
 
@@ -179,14 +191,19 @@  discard block
 block discarded – undo
179 191
             strtolower(ini_get('disable_classes'))
180 192
         );
181 193
 
182
-        if (!in_array('com', $RandomCompat_disabled_classes)) {
183
-            try {
194
+        if (!in_array('com', $RandomCompat_disabled_classes))
195
+        {
196
+            try
197
+            {
184 198
                 $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
185
-                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
199
+                if (method_exists($RandomCompatCOMtest, 'GetRandom'))
200
+                {
186 201
                     // See random_bytes_com_dotnet.php
187 202
                     require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_com_dotnet.php';
188 203
                 }
189
-            } catch (com_exception $e) {
204
+            }
205
+            catch (com_exception $e)
206
+            {
190 207
                 // Don't try to use it.
191 208
             }
192 209
         }
@@ -197,7 +214,8 @@  discard block
 block discarded – undo
197 214
     /**
198 215
      * throw new Exception
199 216
      */
200
-    if (!is_callable('random_bytes')) {
217
+    if (!is_callable('random_bytes'))
218
+    {
201 219
         /**
202 220
          * We don't have any more options, so let's throw an exception right now
203 221
          * and hope the developer won't let it fail silently.
@@ -218,7 +236,8 @@  discard block
 block discarded – undo
218 236
     }
219 237
 }
220 238
 
221
-if (!is_callable('random_int')) {
239
+if (!is_callable('random_int'))
240
+{
222 241
     require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_int.php';
223 242
 }
224 243
 
Please login to merge, or discard this patch.
Sources/random_compat/error_polyfill.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -27,23 +27,23 @@
 block discarded – undo
27 27
  */
28 28
 
29 29
 if (!class_exists('Error', false)) {
30
-    // We can't really avoid making this extend Exception in PHP 5.
31
-    class Error extends Exception
32
-    {
30
+	// We can't really avoid making this extend Exception in PHP 5.
31
+	class Error extends Exception
32
+	{
33 33
 
34
-    }
34
+	}
35 35
 }
36 36
 
37 37
 if (!class_exists('TypeError', false)) {
38
-    if (is_subclass_of('Error', 'Exception')) {
39
-        class TypeError extends Error
40
-        {
38
+	if (is_subclass_of('Error', 'Exception')) {
39
+		class TypeError extends Error
40
+		{
41 41
 
42
-        }
43
-    } else {
44
-        class TypeError extends Exception
45
-        {
42
+		}
43
+	} else {
44
+		class TypeError extends Exception
45
+		{
46 46
 
47
-        }
48
-    }
47
+		}
48
+	}
49 49
 }
Please login to merge, or discard this patch.
Braces   +9 added lines, -4 removed lines patch added patch discarded remove patch
@@ -26,7 +26,8 @@  discard block
 block discarded – undo
26 26
  * SOFTWARE.
27 27
  */
28 28
 
29
-if (!class_exists('Error', false)) {
29
+if (!class_exists('Error', false))
30
+{
30 31
     // We can't really avoid making this extend Exception in PHP 5.
31 32
     class Error extends Exception
32 33
     {
@@ -34,13 +35,17 @@  discard block
 block discarded – undo
34 35
     }
35 36
 }
36 37
 
37
-if (!class_exists('TypeError', false)) {
38
-    if (is_subclass_of('Error', 'Exception')) {
38
+if (!class_exists('TypeError', false))
39
+{
40
+    if (is_subclass_of('Error', 'Exception'))
41
+    {
39 42
         class TypeError extends Error
40 43
         {
41 44
 
42 45
         }
43
-    } else {
46
+    }
47
+    else
48
+    {
44 49
         class TypeError extends Exception
45 50
         {
46 51
 
Please login to merge, or discard this patch.
Sources/random_compat/random_int.php 2 patches
Indentation   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -1,204 +1,204 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (!is_callable('random_int')) {
4
-    /**
5
-     * Random_* Compatibility Library
6
-     * for using the new PHP 7 random_* API in PHP 5 projects
7
-     *
8
-     * The MIT License (MIT)
9
-     *
10
-     * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
11
-     *
12
-     * Permission is hereby granted, free of charge, to any person obtaining a copy
13
-     * of this software and associated documentation files (the "Software"), to deal
14
-     * in the Software without restriction, including without limitation the rights
15
-     * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
-     * copies of the Software, and to permit persons to whom the Software is
17
-     * furnished to do so, subject to the following conditions:
18
-     *
19
-     * The above copyright notice and this permission notice shall be included in
20
-     * all copies or substantial portions of the Software.
21
-     *
22
-     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
-     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
-     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
-     * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
-     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
-     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
-     * SOFTWARE.
29
-     */
30
-
31
-    /**
32
-     * Fetch a random integer between $min and $max inclusive
33
-     *
34
-     * @param int $min
35
-     * @param int $max
36
-     *
37
-     * @throws Exception
38
-     *
39
-     * @return int
40
-     */
41
-    function random_int($min, $max)
42
-    {
43
-        /**
44
-         * Type and input logic checks
45
-         *
46
-         * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
47
-         * (non-inclusive), it will sanely cast it to an int. If you it's equal to
48
-         * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats
49
-         * lose precision, so the <= and => operators might accidentally let a float
50
-         * through.
51
-         */
52
-
53
-        try {
54
-            /** @var int $min */
55
-            $min = RandomCompat_intval($min);
56
-        } catch (TypeError $ex) {
57
-            throw new TypeError(
58
-                'random_int(): $min must be an integer'
59
-            );
60
-        }
61
-
62
-        try {
63
-            /** @var int $max */
64
-            $max = RandomCompat_intval($max);
65
-        } catch (TypeError $ex) {
66
-            throw new TypeError(
67
-                'random_int(): $max must be an integer'
68
-            );
69
-        }
70
-
71
-        /**
72
-         * Now that we've verified our weak typing system has given us an integer,
73
-         * let's validate the logic then we can move forward with generating random
74
-         * integers along a given range.
75
-         */
76
-        if ($min > $max) {
77
-            throw new Error(
78
-                'Minimum value must be less than or equal to the maximum value'
79
-            );
80
-        }
81
-
82
-        if ($max === $min) {
83
-            return (int) $min;
84
-        }
85
-
86
-        /**
87
-         * Initialize variables to 0
88
-         *
89
-         * We want to store:
90
-         * $bytes => the number of random bytes we need
91
-         * $mask => an integer bitmask (for use with the &) operator
92
-         *          so we can minimize the number of discards
93
-         */
94
-        $attempts = $bits = $bytes = $mask = $valueShift = 0;
95
-        /** @var int $attempts */
96
-        /** @var int $bits */
97
-        /** @var int $bytes */
98
-        /** @var int $mask */
99
-        /** @var int $valueShift */
100
-
101
-        /**
102
-         * At this point, $range is a positive number greater than 0. It might
103
-         * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
104
-         * a float and we will lose some precision.
105
-         *
106
-         * @var int|float $range
107
-         */
108
-        $range = $max - $min;
109
-
110
-        /**
111
-         * Test for integer overflow:
112
-         */
113
-        if (!is_int($range)) {
114
-
115
-            /**
116
-             * Still safely calculate wider ranges.
117
-             * Provided by @CodesInChaos, @oittaa
118
-             *
119
-             * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
120
-             *
121
-             * We use ~0 as a mask in this case because it generates all 1s
122
-             *
123
-             * @ref https://eval.in/400356 (32-bit)
124
-             * @ref http://3v4l.org/XX9r5  (64-bit)
125
-             */
126
-            $bytes = PHP_INT_SIZE;
127
-            /** @var int $mask */
128
-            $mask = ~0;
129
-
130
-        } else {
131
-
132
-            /**
133
-             * $bits is effectively ceil(log($range, 2)) without dealing with
134
-             * type juggling
135
-             */
136
-            while ($range > 0) {
137
-                if ($bits % 8 === 0) {
138
-                    ++$bytes;
139
-                }
140
-                ++$bits;
141
-                $range >>= 1;
142
-                /** @var int $mask */
143
-                $mask = $mask << 1 | 1;
144
-            }
145
-            $valueShift = $min;
146
-        }
147
-
148
-        /** @var int $val */
149
-        $val = 0;
150
-        /**
151
-         * Now that we have our parameters set up, let's begin generating
152
-         * random integers until one falls between $min and $max
153
-         */
154
-        /** @psalm-suppress RedundantCondition */
155
-        do {
156
-            /**
157
-             * The rejection probability is at most 0.5, so this corresponds
158
-             * to a failure probability of 2^-128 for a working RNG
159
-             */
160
-            if ($attempts > 128) {
161
-                throw new Exception(
162
-                    'random_int: RNG is broken - too many rejections'
163
-                );
164
-            }
165
-
166
-            /**
167
-             * Let's grab the necessary number of random bytes
168
-             */
169
-            $randomByteString = random_bytes($bytes);
170
-
171
-            /**
172
-             * Let's turn $randomByteString into an integer
173
-             *
174
-             * This uses bitwise operators (<< and |) to build an integer
175
-             * out of the values extracted from ord()
176
-             *
177
-             * Example: [9F] | [6D] | [32] | [0C] =>
178
-             *   159 + 27904 + 3276800 + 201326592 =>
179
-             *   204631455
180
-             */
181
-            $val &= 0;
182
-            for ($i = 0; $i < $bytes; ++$i) {
183
-                $val |= ord($randomByteString[$i]) << ($i * 8);
184
-            }
185
-            /** @var int $val */
186
-
187
-            /**
188
-             * Apply mask
189
-             */
190
-            $val &= $mask;
191
-            $val += $valueShift;
192
-
193
-            ++$attempts;
194
-            /**
195
-             * If $val overflows to a floating point number,
196
-             * ... or is larger than $max,
197
-             * ... or smaller than $min,
198
-             * then try again.
199
-             */
200
-        } while (!is_int($val) || $val > $max || $val < $min);
201
-
202
-        return (int) $val;
203
-    }
4
+	/**
5
+	 * Random_* Compatibility Library
6
+	 * for using the new PHP 7 random_* API in PHP 5 projects
7
+	 *
8
+	 * The MIT License (MIT)
9
+	 *
10
+	 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
11
+	 *
12
+	 * Permission is hereby granted, free of charge, to any person obtaining a copy
13
+	 * of this software and associated documentation files (the "Software"), to deal
14
+	 * in the Software without restriction, including without limitation the rights
15
+	 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+	 * copies of the Software, and to permit persons to whom the Software is
17
+	 * furnished to do so, subject to the following conditions:
18
+	 *
19
+	 * The above copyright notice and this permission notice shall be included in
20
+	 * all copies or substantial portions of the Software.
21
+	 *
22
+	 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+	 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+	 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+	 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+	 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+	 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+	 * SOFTWARE.
29
+	 */
30
+
31
+	/**
32
+	 * Fetch a random integer between $min and $max inclusive
33
+	 *
34
+	 * @param int $min
35
+	 * @param int $max
36
+	 *
37
+	 * @throws Exception
38
+	 *
39
+	 * @return int
40
+	 */
41
+	function random_int($min, $max)
42
+	{
43
+		/**
44
+		 * Type and input logic checks
45
+		 *
46
+		 * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
47
+		 * (non-inclusive), it will sanely cast it to an int. If you it's equal to
48
+		 * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats
49
+		 * lose precision, so the <= and => operators might accidentally let a float
50
+		 * through.
51
+		 */
52
+
53
+		try {
54
+			/** @var int $min */
55
+			$min = RandomCompat_intval($min);
56
+		} catch (TypeError $ex) {
57
+			throw new TypeError(
58
+				'random_int(): $min must be an integer'
59
+			);
60
+		}
61
+
62
+		try {
63
+			/** @var int $max */
64
+			$max = RandomCompat_intval($max);
65
+		} catch (TypeError $ex) {
66
+			throw new TypeError(
67
+				'random_int(): $max must be an integer'
68
+			);
69
+		}
70
+
71
+		/**
72
+		 * Now that we've verified our weak typing system has given us an integer,
73
+		 * let's validate the logic then we can move forward with generating random
74
+		 * integers along a given range.
75
+		 */
76
+		if ($min > $max) {
77
+			throw new Error(
78
+				'Minimum value must be less than or equal to the maximum value'
79
+			);
80
+		}
81
+
82
+		if ($max === $min) {
83
+			return (int) $min;
84
+		}
85
+
86
+		/**
87
+		 * Initialize variables to 0
88
+		 *
89
+		 * We want to store:
90
+		 * $bytes => the number of random bytes we need
91
+		 * $mask => an integer bitmask (for use with the &) operator
92
+		 *          so we can minimize the number of discards
93
+		 */
94
+		$attempts = $bits = $bytes = $mask = $valueShift = 0;
95
+		/** @var int $attempts */
96
+		/** @var int $bits */
97
+		/** @var int $bytes */
98
+		/** @var int $mask */
99
+		/** @var int $valueShift */
100
+
101
+		/**
102
+		 * At this point, $range is a positive number greater than 0. It might
103
+		 * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
104
+		 * a float and we will lose some precision.
105
+		 *
106
+		 * @var int|float $range
107
+		 */
108
+		$range = $max - $min;
109
+
110
+		/**
111
+		 * Test for integer overflow:
112
+		 */
113
+		if (!is_int($range)) {
114
+
115
+			/**
116
+			 * Still safely calculate wider ranges.
117
+			 * Provided by @CodesInChaos, @oittaa
118
+			 *
119
+			 * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
120
+			 *
121
+			 * We use ~0 as a mask in this case because it generates all 1s
122
+			 *
123
+			 * @ref https://eval.in/400356 (32-bit)
124
+			 * @ref http://3v4l.org/XX9r5  (64-bit)
125
+			 */
126
+			$bytes = PHP_INT_SIZE;
127
+			/** @var int $mask */
128
+			$mask = ~0;
129
+
130
+		} else {
131
+
132
+			/**
133
+			 * $bits is effectively ceil(log($range, 2)) without dealing with
134
+			 * type juggling
135
+			 */
136
+			while ($range > 0) {
137
+				if ($bits % 8 === 0) {
138
+					++$bytes;
139
+				}
140
+				++$bits;
141
+				$range >>= 1;
142
+				/** @var int $mask */
143
+				$mask = $mask << 1 | 1;
144
+			}
145
+			$valueShift = $min;
146
+		}
147
+
148
+		/** @var int $val */
149
+		$val = 0;
150
+		/**
151
+		 * Now that we have our parameters set up, let's begin generating
152
+		 * random integers until one falls between $min and $max
153
+		 */
154
+		/** @psalm-suppress RedundantCondition */
155
+		do {
156
+			/**
157
+			 * The rejection probability is at most 0.5, so this corresponds
158
+			 * to a failure probability of 2^-128 for a working RNG
159
+			 */
160
+			if ($attempts > 128) {
161
+				throw new Exception(
162
+					'random_int: RNG is broken - too many rejections'
163
+				);
164
+			}
165
+
166
+			/**
167
+			 * Let's grab the necessary number of random bytes
168
+			 */
169
+			$randomByteString = random_bytes($bytes);
170
+
171
+			/**
172
+			 * Let's turn $randomByteString into an integer
173
+			 *
174
+			 * This uses bitwise operators (<< and |) to build an integer
175
+			 * out of the values extracted from ord()
176
+			 *
177
+			 * Example: [9F] | [6D] | [32] | [0C] =>
178
+			 *   159 + 27904 + 3276800 + 201326592 =>
179
+			 *   204631455
180
+			 */
181
+			$val &= 0;
182
+			for ($i = 0; $i < $bytes; ++$i) {
183
+				$val |= ord($randomByteString[$i]) << ($i * 8);
184
+			}
185
+			/** @var int $val */
186
+
187
+			/**
188
+			 * Apply mask
189
+			 */
190
+			$val &= $mask;
191
+			$val += $valueShift;
192
+
193
+			++$attempts;
194
+			/**
195
+			 * If $val overflows to a floating point number,
196
+			 * ... or is larger than $max,
197
+			 * ... or smaller than $min,
198
+			 * then try again.
199
+			 */
200
+		} while (!is_int($val) || $val > $max || $val < $min);
201
+
202
+		return (int) $val;
203
+	}
204 204
 }
Please login to merge, or discard this patch.
Braces   +29 added lines, -13 removed lines patch added patch discarded remove patch
@@ -1,6 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (!is_callable('random_int')) {
3
+if (!is_callable('random_int'))
4
+{
4 5
     /**
5 6
      * Random_* Compatibility Library
6 7
      * for using the new PHP 7 random_* API in PHP 5 projects
@@ -50,19 +51,25 @@  discard block
 block discarded – undo
50 51
          * through.
51 52
          */
52 53
 
53
-        try {
54
+        try
55
+        {
54 56
             /** @var int $min */
55 57
             $min = RandomCompat_intval($min);
56
-        } catch (TypeError $ex) {
58
+        }
59
+        catch (TypeError $ex)
60
+        {
57 61
             throw new TypeError(
58 62
                 'random_int(): $min must be an integer'
59 63
             );
60 64
         }
61 65
 
62
-        try {
66
+        try
67
+        {
63 68
             /** @var int $max */
64 69
             $max = RandomCompat_intval($max);
65
-        } catch (TypeError $ex) {
70
+        }
71
+        catch (TypeError $ex)
72
+        {
66 73
             throw new TypeError(
67 74
                 'random_int(): $max must be an integer'
68 75
             );
@@ -73,13 +80,15 @@  discard block
 block discarded – undo
73 80
          * let's validate the logic then we can move forward with generating random
74 81
          * integers along a given range.
75 82
          */
76
-        if ($min > $max) {
83
+        if ($min > $max)
84
+        {
77 85
             throw new Error(
78 86
                 'Minimum value must be less than or equal to the maximum value'
79 87
             );
80 88
         }
81 89
 
82
-        if ($max === $min) {
90
+        if ($max === $min)
91
+        {
83 92
             return (int) $min;
84 93
         }
85 94
 
@@ -110,7 +119,8 @@  discard block
 block discarded – undo
110 119
         /**
111 120
          * Test for integer overflow:
112 121
          */
113
-        if (!is_int($range)) {
122
+        if (!is_int($range))
123
+        {
114 124
 
115 125
             /**
116 126
              * Still safely calculate wider ranges.
@@ -127,14 +137,18 @@  discard block
 block discarded – undo
127 137
             /** @var int $mask */
128 138
             $mask = ~0;
129 139
 
130
-        } else {
140
+        }
141
+        else
142
+        {
131 143
 
132 144
             /**
133 145
              * $bits is effectively ceil(log($range, 2)) without dealing with
134 146
              * type juggling
135 147
              */
136
-            while ($range > 0) {
137
-                if ($bits % 8 === 0) {
148
+            while ($range > 0)
149
+            {
150
+                if ($bits % 8 === 0)
151
+                {
138 152
                     ++$bytes;
139 153
                 }
140 154
                 ++$bits;
@@ -157,7 +171,8 @@  discard block
 block discarded – undo
157 171
              * The rejection probability is at most 0.5, so this corresponds
158 172
              * to a failure probability of 2^-128 for a working RNG
159 173
              */
160
-            if ($attempts > 128) {
174
+            if ($attempts > 128)
175
+            {
161 176
                 throw new Exception(
162 177
                     'random_int: RNG is broken - too many rejections'
163 178
                 );
@@ -179,7 +194,8 @@  discard block
 block discarded – undo
179 194
              *   204631455
180 195
              */
181 196
             $val &= 0;
182
-            for ($i = 0; $i < $bytes; ++$i) {
197
+            for ($i = 0; $i < $bytes; ++$i)
198
+            {
183 199
                 $val |= ord($randomByteString[$i]) << ($i * 8);
184 200
             }
185 201
             /** @var int $val */
Please login to merge, or discard this patch.