aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php')
-rw-r--r--srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php138
1 files changed, 138 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php b/srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php
new file mode 100644
index 0000000..dbbc0e1
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/symfony/polyfill-php56/Php56.php
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php56;
+
+use Symfony\Polyfill\Util\Binary;
+
+/**
+ * @internal
+ */
+final class Php56
+{
+ const LDAP_ESCAPE_FILTER = 1;
+ const LDAP_ESCAPE_DN = 2;
+
+ public static function hash_equals($knownString, $userInput)
+ {
+ if (!\is_string($knownString)) {
+ trigger_error('Expected known_string to be a string, '.\gettype($knownString).' given', E_USER_WARNING);
+
+ return false;
+ }
+
+ if (!\is_string($userInput)) {
+ trigger_error('Expected user_input to be a string, '.\gettype($userInput).' given', E_USER_WARNING);
+
+ return false;
+ }
+
+ $knownLen = Binary::strlen($knownString);
+ $userLen = Binary::strlen($userInput);
+
+ if ($knownLen !== $userLen) {
+ return false;
+ }
+
+ $result = 0;
+
+ for ($i = 0; $i < $knownLen; ++$i) {
+ $result |= \ord($knownString[$i]) ^ \ord($userInput[$i]);
+ }
+
+ return 0 === $result;
+ }
+
+ /**
+ * Stub implementation of the {@link ldap_escape()} function of the ldap
+ * extension.
+ *
+ * Escape strings for safe use in LDAP filters and DNs.
+ *
+ * @author Chris Wright <ldapi@daverandom.com>
+ *
+ * @param string $subject
+ * @param string $ignore
+ * @param int $flags
+ *
+ * @return string
+ *
+ * @see http://stackoverflow.com/a/8561604
+ */
+ public static function ldap_escape($subject, $ignore = '', $flags = 0)
+ {
+ static $charMaps = null;
+
+ if (null === $charMaps) {
+ $charMaps = array(
+ self::LDAP_ESCAPE_FILTER => array('\\', '*', '(', ')', "\x00"),
+ self::LDAP_ESCAPE_DN => array('\\', ',', '=', '+', '<', '>', ';', '"', '#', "\r"),
+ );
+
+ $charMaps[0] = array();
+
+ for ($i = 0; $i < 256; ++$i) {
+ $charMaps[0][\chr($i)] = sprintf('\\%02x', $i);
+ }
+
+ for ($i = 0, $l = \count($charMaps[self::LDAP_ESCAPE_FILTER]); $i < $l; ++$i) {
+ $chr = $charMaps[self::LDAP_ESCAPE_FILTER][$i];
+ unset($charMaps[self::LDAP_ESCAPE_FILTER][$i]);
+ $charMaps[self::LDAP_ESCAPE_FILTER][$chr] = $charMaps[0][$chr];
+ }
+
+ for ($i = 0, $l = \count($charMaps[self::LDAP_ESCAPE_DN]); $i < $l; ++$i) {
+ $chr = $charMaps[self::LDAP_ESCAPE_DN][$i];
+ unset($charMaps[self::LDAP_ESCAPE_DN][$i]);
+ $charMaps[self::LDAP_ESCAPE_DN][$chr] = $charMaps[0][$chr];
+ }
+ }
+
+ // Create the base char map to escape
+ $flags = (int) $flags;
+ $charMap = array();
+
+ if ($flags & self::LDAP_ESCAPE_FILTER) {
+ $charMap += $charMaps[self::LDAP_ESCAPE_FILTER];
+ }
+
+ if ($flags & self::LDAP_ESCAPE_DN) {
+ $charMap += $charMaps[self::LDAP_ESCAPE_DN];
+ }
+
+ if (!$charMap) {
+ $charMap = $charMaps[0];
+ }
+
+ // Remove any chars to ignore from the list
+ $ignore = (string) $ignore;
+
+ for ($i = 0, $l = \strlen($ignore); $i < $l; ++$i) {
+ unset($charMap[$ignore[$i]]);
+ }
+
+ // Do the main replacement
+ $result = strtr($subject, $charMap);
+
+ // Encode leading/trailing spaces if self::LDAP_ESCAPE_DN is passed
+ if ($flags & self::LDAP_ESCAPE_DN) {
+ if (' ' === $result[0]) {
+ $result = '\\20'.substr($result, 1);
+ }
+
+ if (' ' === $result[\strlen($result) - 1]) {
+ $result = substr($result, 0, -1).'\\20';
+ }
+ }
+
+ return $result;
+ }
+}