bug37595.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. Bug #37595 (mcrypt_generic calculates data length in wrong way)
  3. --SKIPIF--
  4. <?php if (!extension_loaded("mcrypt")) print "skip"; ?>
  5. --FILE--
  6. <?php
  7. $cipher_alg = MCRYPT_BLOWFISH;
  8. $skey = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
  9. $key='';
  10. foreach($skey as $t) {
  11. $key .= chr($t);
  12. }
  13. $sstr = array(1,2,3,4,5,6,7,8);
  14. $iv='';
  15. foreach($sstr as $s) {
  16. $iv .= chr($s);
  17. }
  18. $str = "12345678";
  19. $td = mcrypt_module_open(MCRYPT_BLOWFISH,'',MCRYPT_MODE_CBC,'');
  20. $data = Array(
  21. '12345678',
  22. '123456789',
  23. "\x001234567",
  24. '',
  25. '1234567812345678',
  26. '12345678123456789'
  27. );
  28. foreach ($data as $val) {
  29. mcrypt_generic_init($td, $key, $iv);
  30. $enc = mcrypt_generic($td, $val);
  31. mcrypt_generic_deinit($td);
  32. mcrypt_generic_init($td, $key, $iv);
  33. var_dump($dec = @mdecrypt_generic($td, $enc));
  34. }
  35. mcrypt_module_close($td);
  36. echo "Done\n";
  37. ?>
  38. --EXPECTF--
  39. string(8) "12345678"
  40. string(16) "123456789�������"
  41. string(8) "�1234567"
  42. Warning: mcrypt_generic(): An empty string was passed in %s on line %d
  43. bool(false)
  44. string(16) "1234567812345678"
  45. string(24) "12345678123456789�������"
  46. Done