bug_bits.phpt 2.3 KB

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