alecpl
2008-04-17 15788164228a34cc3cb4d4886a74d42c9a757825
- Updated PEAR::Auth_SASL to 1.0.2


3 files modified
28 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/lib/Auth/SASL.php 3 ●●●● patch | view | raw | blame | history
program/lib/Auth/SASL/DigestMD5.php 24 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -4,6 +4,7 @@
2008/04/17 (alec)
----------
- Fix IMAP response in message body when message has no body (#1484964)
- Updated PEAR::Auth_SASL to 1.0.2
2008/04/16 (estadtherr)
----------
program/lib/Auth/SASL.php
@@ -91,7 +91,8 @@
        }
        require_once($filename);
        return new $classname();
        $obj = new $classname();
        return $obj;
    }
}
program/lib/Auth/SASL/DigestMD5.php
@@ -74,7 +74,12 @@
            $digest_uri     = sprintf('%s/%s', $service, $hostname);
            $response_value = $this->_getResponseValue($authcid, $pass, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $authzid);
            return sprintf('username="%s",realm="%s"' . $authzid_string  . ',nonce="%s",cnonce="%s",nc="00000001",qop=auth,digest-uri="%s",response=%s,%d', $authcid, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
            if ($challenge['realm']) {
                return sprintf('username="%s",realm="%s"' . $authzid_string  .
',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
            } else {
                return sprintf('username="%s"' . $authzid_string  . ',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
            }
        } else {
            return PEAR::raiseError('Invalid digest challenge');
        }
@@ -125,20 +130,19 @@
        */
        // Realm
        if (empty($tokens['realm'])) {
            $uname = posix_uname();
            $tokens['realm'] = $uname['nodename'];
            $tokens['realm'] = "";
        }
        // Maxbuf
        if (empty($tokens['maxbuf'])) {
            $tokens['maxbuf'] = 65536;
        }
        // Required: nonce, algorithm
        if (empty($tokens['nonce']) OR empty($tokens['algorithm'])) {
            return array();
        }
        return $tokens;
    }
@@ -174,11 +178,11 @@
    */
    function _getCnonce()
    {
        if (file_exists('/dev/urandom')) {
            return base64_encode(fread(fopen('/dev/urandom', 'r'), 32));
        if (file_exists('/dev/urandom') && $fd = @fopen('/dev/urandom', 'r')) {
            return base64_encode(fread($fd, 32));
        } elseif (file_exists('/dev/random')) {
            return base64_encode(fread(fopen('/dev/random', 'r'), 32));
        } elseif (file_exists('/dev/random') && $fd = @fopen('/dev/random', 'r')) {
            return base64_encode(fread($fd, 32));
        } else {
            $str = '';