bug60244.phpt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. --TEST--
  2. Bug #60244 (pg_fetch_* functions do not validate that row param is >0)
  3. --EXTENSIONS--
  4. pgsql
  5. --SKIPIF--
  6. <?php
  7. include("skipif.inc");
  8. ?>
  9. --FILE--
  10. <?php
  11. include 'config.inc';
  12. $db = pg_connect($conn_str);
  13. $result = pg_query($db, "select 'a' union select 'b'");
  14. try {
  15. var_dump(pg_fetch_array($result, -1));
  16. } catch (\ValueError $e) {
  17. echo $e->getMessage() . \PHP_EOL;
  18. }
  19. try {
  20. var_dump(pg_fetch_assoc($result, -1));
  21. } catch (\ValueError $e) {
  22. echo $e->getMessage() . \PHP_EOL;
  23. }
  24. try {
  25. var_dump(pg_fetch_object($result, -1));
  26. } catch (\ValueError $e) {
  27. echo $e->getMessage() . \PHP_EOL;
  28. }
  29. try {
  30. var_dump(pg_fetch_row($result, -1));
  31. } catch (\ValueError $e) {
  32. echo $e->getMessage() . \PHP_EOL;
  33. }
  34. var_dump(pg_fetch_array($result, 0));
  35. var_dump(pg_fetch_assoc($result, 0));
  36. var_dump(pg_fetch_object($result, 0));
  37. var_dump(pg_fetch_row($result, 0));
  38. pg_close($db);
  39. ?>
  40. --EXPECTF--
  41. pg_fetch_array(): Argument #2 ($row) must be greater than or equal to 0
  42. pg_fetch_assoc(): Argument #2 ($row) must be greater than or equal to 0
  43. pg_fetch_object(): Argument #2 ($row) must be greater than or equal to 0
  44. pg_fetch_row(): Argument #2 ($row) must be greater than or equal to 0
  45. array(2) {
  46. [0]=>
  47. string(1) "a"
  48. ["?column?"]=>
  49. string(1) "a"
  50. }
  51. array(1) {
  52. ["?column?"]=>
  53. string(1) "a"
  54. }
  55. object(stdClass)#%d (1) {
  56. ["?column?"]=>
  57. string(1) "a"
  58. }
  59. array(1) {
  60. [0]=>
  61. string(1) "a"
  62. }