cvs: php-src(PHP_5_2) / NEWS /ext/oci8 oci8_statement.c php_oci8_int.h /ext/oci8/tests bug38161.phpt
| From: | Antony Dovgal | Date: | Wed, 09 Aug 2006 12:15:43 +0000 |
| Subject: | cvs: php-src(PHP_5_2) / NEWS /ext/oci8 oci8_statement.c php_oci8_int.h /ext/oci8/tests bug38161.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-39868@lists.php.net to get a copy of this message | ||
tony2001 Wed Aug 9 12:15:43 2006 UTC
Added files: (Branch: PHP_5_2)
/php-src/ext/oci8/tests bug38161.phpt
Modified files:
/php-src NEWS
/php-src/ext/oci8 oci8_statement.c php_oci8_int.h
Log:
MFH: fix #38161 (oci_bind_by_name() returns garbage when Oracle didn't set the variable)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.191&r2=1.2027.2.547.2.192&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.191 php-src/NEWS:1.2027.2.547.2.192
--- php-src/NEWS:1.2027.2.547.2.191 Tue Aug 8 15:55:26 2006
+++ php-src/NEWS Wed Aug 9 12:15:42 2006
@@ -75,6 +75,8 @@
itself). (Ilia)
- Fixed bug #38173 (Freeing nested cursors causes OCI8 to segfault). (Tony)
- Fixed bug #38168 (Crash in pdo_pgsql on missing bound parameters). (Ilia)
+- Fixed bug #38161 (oci_bind_by_name() returns garbage when Oracle didn't set
+ the variable). (Tony)
- Fixed bug #38132 (ReflectionClass::getStaticProperties() retains \0 in key
names). (Ilia)
- Fixed bug #38064 (ignored constructor visibility). (Marcus)
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/oci8_statement.c?r1=1.7.2.14.2.3&r2=1.7.2.14.2.4&diff_format=u
Index: php-src/ext/oci8/oci8_statement.c
diff -u php-src/ext/oci8/oci8_statement.c:1.7.2.14.2.3
php-src/ext/oci8/oci8_statement.c:1.7.2.14.2.4
--- php-src/ext/oci8/oci8_statement.c:1.7.2.14.2.3 Wed Aug 9 11:49:06 2006
+++ php-src/ext/oci8/oci8_statement.c Wed Aug 9 12:15:42 2006
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_statement.c,v 1.7.2.14.2.3 2006/08/09 11:49:06 tony2001 Exp $ */
+/* $Id: oci8_statement.c,v 1.7.2.14.2.4 2006/08/09 12:15:42 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
@@ -826,9 +826,11 @@
case SQLT_LNG:
case SQLT_CHR:
/* this is the default case when type was not specified */
- convert_to_string(var);
+ if (Z_TYPE_P(var) != IS_NULL) {
+ convert_to_string(var);
+ }
if (maxlength == -1) {
- value_sz = Z_STRLEN_P(var);
+ value_sz = (Z_TYPE_P(var) == IS_STRING) ? Z_STRLEN_P(var) : 0;
}
else {
value_sz = maxlength;
@@ -1003,7 +1005,7 @@
zval_dtor(val);
Z_STRLEN_P(val) = PHP_OCI_PIECE_SIZE; /* 64K-1 is max XXX */
- Z_STRVAL_P(val) = emalloc(Z_STRLEN_P(phpbind->zval));
+ Z_STRVAL_P(val) = ecalloc(1, Z_STRLEN_P(phpbind->zval) + 1);
/* XXX we assume that zend-zval len has 4 bytes */
*alenpp = (ub4*) &Z_STRLEN_P(phpbind->zval);
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/php_oci8_int.h?r1=1.11.2.6.2.3&r2=1.11.2.6.2.4&diff_format=u
Index: php-src/ext/oci8/php_oci8_int.h
diff -u php-src/ext/oci8/php_oci8_int.h:1.11.2.6.2.3 php-src/ext/oci8/php_oci8_int.h:1.11.2.6.2.4
--- php-src/ext/oci8/php_oci8_int.h:1.11.2.6.2.3 Mon Jul 31 10:30:22 2006
+++ php-src/ext/oci8/php_oci8_int.h Wed Aug 9 12:15:42 2006
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_oci8_int.h,v 1.11.2.6.2.3 2006/07/31 10:30:22 tony2001 Exp $ */
+/* $Id: php_oci8_int.h,v 1.11.2.6.2.4 2006/08/09 12:15:42 tony2001 Exp $ */
#if HAVE_OCI8
# ifndef PHP_OCI8_INT_H
@@ -186,7 +186,7 @@
long max_length;
long type;
} array;
- sb2 indicator; /* */
+ sb2 indicator; /* -1 means NULL */
ub2 retcode; /* */
} php_oci_bind; /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/bug38161.phpt?view=markup&rev=1.1
Index: php-src/ext/oci8/tests/bug38161.phpt
+++ php-src/ext/oci8/tests/bug38161.phpt
--TEST--
bug #38161 (oci_bind_by_name() returns garbage when Oracle didn't set the variable)
--SKIPIF--
<?php if (!extension_loaded("oci8")) print "skip"; ?>
--FILE--
<?php
require dirname(__FILE__).'/connect.inc';
$query = "begin if false then :bv := 1; end if; end;";
$stid = oci_parse($c, $query);
oci_bind_by_name($stid, ":bv", $bv, 22);
oci_execute($stid, OCI_DEFAULT);
var_dump($bv);
unset($bv);
$query = "begin if false then :bv := 1; end if; end;";
$stid = oci_parse($c, $query);
oci_bind_by_name($stid, ":bv", $bv, 22, SQLT_INT);
oci_execute($stid, OCI_DEFAULT);
var_dump($bv);
echo "Done\n";
?>
--EXPECTF--
NULL
int(0)
Done