bug_bits.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. --TEST--
  2. Bug (Incorrectly decoding bit values / Malformed server packet. Field length pointing)
  3. --EXTENSIONS--
  4. mysqli
  5. --SKIPIF--
  6. <?php
  7. require_once('skipifconnectfailure.inc');
  8. ?>
  9. --FILE--
  10. <?php
  11. require_once("connect.inc");
  12. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
  13. printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
  14. }
  15. if (!$link->query("DROP TABLE IF EXISTS bug_bits")) {
  16. printf("[002] [%d] %s\n", $link->errno, $link->error);
  17. }
  18. if (!$link->query("CREATE TABLE `bug_bits` (`inty` bigint(20) unsigned NOT NULL DEFAULT '0', `bitty` bit(64) NOT NULL DEFAULT b'0')")) {
  19. printf("[003] [%d] %s\n", $link->errno, $link->error);
  20. }
  21. $insertQuery = "INSERT INTO `bug_bits` VALUES (18446744073709551615, 18446744073709551615)".
  22. ",(18446744073709551614, 18446744073709551614)".
  23. ",(4294967296, 4294967296)".
  24. ",(4294967295, 4294967295)".
  25. ",(2147483648, 2147483648)".
  26. ",(2147483647, 2147483647)".
  27. ",(1, 1)";
  28. if (!$link->query($insertQuery)) {
  29. printf("[004] [%d] %s\n", $link->errno, $link->error);
  30. }
  31. if (!($res = $link->query("SELECT * FROM `bug_bits`"))) {
  32. printf("[005] [%d] %s\n", $link->errno, $link->error);
  33. }
  34. while ($row = $res->fetch_assoc()) {
  35. var_dump($row);
  36. }
  37. $link->close();
  38. echo "Done\n";
  39. ?>
  40. --CLEAN--
  41. <?php
  42. require_once("connect.inc");
  43. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
  44. printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
  45. if (!mysqli_query($link, "DROP TABLE IF EXISTS bug_bits"))
  46. printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  47. mysqli_close($link);
  48. ?>
  49. --EXPECT--
  50. array(2) {
  51. ["inty"]=>
  52. string(20) "18446744073709551615"
  53. ["bitty"]=>
  54. string(20) "18446744073709551615"
  55. }
  56. array(2) {
  57. ["inty"]=>
  58. string(20) "18446744073709551614"
  59. ["bitty"]=>
  60. string(20) "18446744073709551614"
  61. }
  62. array(2) {
  63. ["inty"]=>
  64. string(10) "4294967296"
  65. ["bitty"]=>
  66. string(10) "4294967296"
  67. }
  68. array(2) {
  69. ["inty"]=>
  70. string(10) "4294967295"
  71. ["bitty"]=>
  72. string(10) "4294967295"
  73. }
  74. array(2) {
  75. ["inty"]=>
  76. string(10) "2147483648"
  77. ["bitty"]=>
  78. string(10) "2147483648"
  79. }
  80. array(2) {
  81. ["inty"]=>
  82. string(10) "2147483647"
  83. ["bitty"]=>
  84. string(10) "2147483647"
  85. }
  86. array(2) {
  87. ["inty"]=>
  88. string(1) "1"
  89. ["bitty"]=>
  90. string(1) "1"
  91. }
  92. Done