X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=extlib%2FOAuth.php;h=04984d5fa0327defc0c6f1b1fe6f4c770254b96d;hb=ef1cb1cc9493034801ced15bc2e84418caa60f54;hp=648627b57637f34ed93ea66d226c9244cc396931;hpb=b3b3af9a2eff10c272bb213eccd3dd3060bc5830;p=quix0rs-gnu-social.git diff --git a/extlib/OAuth.php b/extlib/OAuth.php index 648627b576..04984d5fa0 100644 --- a/extlib/OAuth.php +++ b/extlib/OAuth.php @@ -54,6 +54,24 @@ class OAuthSignatureMethod {/*{{{*/ public function check_signature(&$request, $consumer, $token, $signature) { $built = $this->build_signature($request, $consumer, $token); return $built == $signature; + + // Check for zero length, although unlikely here + if (strlen($built) == 0 || strlen($signature) == 0) { + return false; + } + + if (strlen($built) != strlen($signature)) { + return false; + } + + $result = 0; + + // Avoid a timing leak with a (hopefully) time insensitive compare + for ($i = 0; $i < strlen($signature); $i++) { + $result |= ord($built{$i}) ^ ord($signature{$i}); + } + + return $result == 0; } }/*}}}*/