bug74625.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --TEST--
  2. Bug #74625 (Integer overflow in oci_bind_array_by_name)
  3. --EXTENSIONS--
  4. oci8
  5. --FILE--
  6. <?php
  7. require(__DIR__.'/connect.inc');
  8. // Initialization
  9. $stmtarray = array(
  10. "CREATE TABLE bug74625_tab (NAME NUMBER)",
  11. "CREATE OR REPLACE PACKAGE PKG74625 AS
  12. TYPE ARRTYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  13. PROCEDURE iobind(c1 IN OUT ARRTYPE);
  14. END PKG74625;",
  15. "CREATE OR REPLACE PACKAGE BODY PKG74625 AS
  16. PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
  17. BEGIN
  18. FOR i IN 1..5 LOOP
  19. c1(i) := c1(i) * 2;
  20. END LOOP;
  21. END iobind;
  22. END PKG74625;"
  23. );
  24. oci8_test_sql_execute($c, $stmtarray);
  25. $statement = oci_parse($c, "BEGIN pkg74625.iobind(:c1); END;");
  26. $array = Array(-1,-2,-3,-4,-5);
  27. oci_bind_array_by_name($statement, ":c1", $array, 5, -1, SQLT_INT);
  28. oci_execute($statement);
  29. var_dump($array);
  30. // Cleanup
  31. $stmtarray = array(
  32. "DROP TABLE bug74625_tab",
  33. "DROP PACKAGE PKG74625"
  34. );
  35. oci8_test_sql_execute($c, $stmtarray);
  36. ?>
  37. --EXPECT--
  38. array(5) {
  39. [0]=>
  40. int(-2)
  41. [1]=>
  42. int(-4)
  43. [2]=>
  44. int(-6)
  45. [3]=>
  46. int(-8)
  47. [4]=>
  48. int(-10)
  49. }