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]