ID: 15140
Comment by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Assigned
Bug Type: mcrypt related
Operating System: Redhat 7.2
PHP Version: 4.1.1
Assigned To: derick
New Comment:

Derick,

Closer to a solution...

Mcrypt Bug is found but not fixed.

OK Here is the symptoms:
     In The PHP Code the function  mcrypt_generic_init (td, key_s,
key_size,iv_s) is called with key_size=19. (should be 16 and I don't
know why yet)

This will gives the segfault.

Try it in mcrypt-2.4.18/doc/example.c
change the line at the beginning of the main
    int keysize=16; /* 128 bits */ to
    int keysize=19; /* 128 bits */

Compile and BOOM Crash Segfault.


Ok Now why is php thinks the keysize should be 19.....

to test check this code:

The Culprit code is in <yourphpsource>/ext/mcrypt/mcrypt.c line 494
php-4.1.1
add the two line. You will see that Part 12 will never get executed for
twofish.
and keysize is 19.

added>>> fprintf(stderr, "MCRYPT Debug Part 11\nKey_s:%s,
\nKey_Size:%d,\nIV:%s, \nIV_S:%s, \n",key_s, key_size, iv_s);
        result = mcrypt_generic_init (td, key_s, key_size, iv_s);
added>>> fprintf(stderr, "MCRYPT Debug Part 12\n");

Will come back with an answer


BG


Previous Comments:
------------------------------------------------------------------------

[2002-01-21 09:48:24] [EMAIL PROTECTED]

To be completely clear, Derick asked to file a bugreport in the
PHP-bugs-system about mcrypt not passing some PHP-tests, not to send
the mcrypt-folks a bugreport.

------------------------------------------------------------------------

[2002-01-21 07:22:12] [EMAIL PROTECTED]

That was quick.

I am also sending a Bug Report to mcrypt.

Testing with GOST Fail in the Same Way. 
Works for the others listed below.
 
//T($user_id, MCRYPT_TWOFISH);  // Generates Seg Fault.
//T($user_id, MCRYPT_GOST);         // Crash The System like TWOFISH

T($user_id, MCRYPT_TripleDES);  // Good
T($user_id, MCRYPT_BLOWFISH);     // Good
T($user_id, MCRYPT_DES);        // Good
T($user_id, MCRYPT_RC2);              // Good


------------------------------------------------------------------------

[2002-01-21 07:10:31] [EMAIL PROTECTED]

I'll check this out, please file a bug report for mcrypt too (about not
passing make test).

Derick

------------------------------------------------------------------------

[2002-01-21 07:06:15] [EMAIL PROTECTED]


The Script as it is will work using Triple DES

Uncomment the TWOFISH Line At The Bottom of the code and you will get
the Segmentation Fault.



------------------------------------------------------------------------

[2002-01-21 07:03:51] [EMAIL PROTECTED]

// Problem with TWOFISH and mcrypt under PHP 4.0.6 and 4.1.1
// Tested with libmcrypt 2.4.11 2.4.13 2.4.18 2.4.19
// 2.4.19 is Broken as it does not pass "make check" to test
// When Loading This Page you should see the time and a Cookie Number.
// If you test with TWOFISH It give a Segmentation Failure in the
Apache Error Log
// But Will Work With 3DES and BLOWFISH.
//
// I do not have a gdb trace sorry :(
//
// Strange.

Testing Script is following
<?php
// Problem with TWOFISH and mcrypt under PHP 4.0.6 and 4.1.1
// Tested with libmcrypt 2.4.11 2.4.13 2.4.18 2.4.19 (Broken does not
pass make check)
// When Loading This Page you should see the time and a Cookie Number.
// If you test with TWOFISH It give a Segmentation Failure in the
Apache Error Log
// But Will Work With 3DES.
//
// Strange.
// [EMAIL PROTECTED] REMOVE NOSPAM

function T ( $user_id, $Encryption ) {
        $session_serial = $user_id.
           '-'.time().
           '-'.$GLOBALS['REMOTE_ADDR'].
           '-'.$GLOBALS['HTTP_USER_AGENT'];

        echo "<p>Cypher: " . $Encryption;

        $sessionKey="SessionKeyYouChoose"; // Obviously not the one we
use....:)

        // Fails with TWOFISH but Works with TripleDES
        // Code Fail to produce Code.
        //$td = mcrypt_module_open(MCRYPT_TWOFISH, "", MCRYPT_MODE_ECB,
"");
        //$td = mcrypt_module_open(MCRYPT_TripleDES, "",
MCRYPT_MODE_ECB, "");
        $td = mcrypt_module_open($Encryption, "", MCRYPT_MODE_ECB,
"");

        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td),
MCRYPT_RAND);
        mcrypt_generic_init($td, $sessionKey, $iv);
        $encrypted_session_serial = mcrypt_generic($td,
$session_serial);
        mcrypt_generic_end($td);
        $session_serial_hash =
md5($encrypted_session_serial.$sessionKey);
        $session_serial_cookie =
base64_encode($encrypted_session_serial).'-'.$session_serial_h
ash;

        return $session_serial_cookie;
}

// If you don't see the time number increasing it is because Apache
child seg fault
// Check your apache/logs/error_log that is the problem.


echo "<p>If you don't see the time number increasing it is because
Apache child seg fault. <br>
";
echo "Check your apache/logs/error_log (tail -f error_log) and you will
see the problem every t
ime you reload.";
echo "<p>Time is: " . time();
$user_id=120804;

//$test  = T($user_id, MCRYPT_TWOFISH);
$test  = T($user_id, MCRYPT_TripleDES);

echo "<p>Cookie is : $test";
echo "<p>The End";
?>




------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=15140&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to