tony2001 Mon Oct 10 06:41:30 2005 EDT
Modified files: (Branch: PHP_4_4)
/php-src/ext/oci8 oci8.c
Log:
fix #33383 (crash when retrieving empty LOBs)
http://cvs.php.net/diff.php/php-src/ext/oci8/oci8.c?r1=1.183.2.18.2.1&r2=1.183.2.18.2.2&ty=u
Index: php-src/ext/oci8/oci8.c
diff -u php-src/ext/oci8/oci8.c:1.183.2.18.2.1
php-src/ext/oci8/oci8.c:1.183.2.18.2.2
--- php-src/ext/oci8/oci8.c:1.183.2.18.2.1 Mon Jun 13 05:37:57 2005
+++ php-src/ext/oci8/oci8.c Mon Oct 10 06:41:24 2005
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8.c,v 1.183.2.18.2.1 2005/06/13 09:37:57 tony2001 Exp $ */
+/* $Id: oci8.c,v 1.183.2.18.2.2 2005/10/10 10:41:24 tony2001 Exp $ */
/* TODO list:
*
@@ -641,7 +641,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "OCI8 Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.183.2.18.2.1 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.183.2.18.2.2 $");
#ifndef PHP_WIN32
php_info_print_table_row(2, "Oracle Version", PHP_OCI8_VERSION );
php_info_print_table_row(2, "Compile-time ORACLE_HOME", PHP_OCI8_DIR );
@@ -1285,7 +1285,12 @@
if (oci_loadlob(statement->conn,descr,&buffer,&loblen))
{
ZVAL_FALSE(value);
} else {
- ZVAL_STRINGL(value,buffer,loblen,0);
+ if (loblen > 0) {
+ ZVAL_STRINGL(value,buffer,loblen,0);
+ }
+ else {
+ ZVAL_EMPTY_STRING(value);
+ }
}
} else {
/* return the locator */
@@ -1912,6 +1917,10 @@
return -1;
}
+ if (readlen == 0) {
+ return 0;
+ }
+
buf = emalloc(readlen + 1);
while (readlen > 0) { /* thies loop should not be entered on readlen ==
0 */
@@ -2527,7 +2536,7 @@
/* breakthru to open */
}
}
-
+
server = calloc(1,sizeof(oci_server));
server->persistent = persistent;
@@ -3286,7 +3295,12 @@
}
if (!oci_loadlob(descr->conn,descr,&buffer,&loblen)) {
- RETURN_STRINGL(buffer,loblen,0);
+ if (loblen > 0) {
+ RETURN_STRINGL(buffer,loblen,0);
+ }
+ else {
+ RETURN_EMPTY_STRING();
+ }
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php