tony2001                Fri Jan 26 15:07:45 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/pdo_oci        oci_statement.c 
  Log:
  fix leak
  readuce size of the buffer to prevent ORA-01461
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_oci/oci_statement.c?r1=1.16.2.10.2.4&r2=1.16.2.10.2.5&diff_format=u
Index: php-src/ext/pdo_oci/oci_statement.c
diff -u php-src/ext/pdo_oci/oci_statement.c:1.16.2.10.2.4 
php-src/ext/pdo_oci/oci_statement.c:1.16.2.10.2.5
--- php-src/ext/pdo_oci/oci_statement.c:1.16.2.10.2.4   Mon Jan 22 12:49:22 2007
+++ php-src/ext/pdo_oci/oci_statement.c Fri Jan 26 15:07:45 2007
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: oci_statement.c,v 1.16.2.10.2.4 2007/01/22 12:49:22 tony2001 Exp $ */
+/* $Id: oci_statement.c,v 1.16.2.10.2.5 2007/01/26 15:07:45 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -150,6 +150,23 @@
                                (S->stmt, OCI_HTYPE_STMT, &colcount, 0, 
OCI_ATTR_PARAM_COUNT, S->err));
 
                stmt->column_count = (int)colcount;
+       
+               if (S->cols) {
+                       int i;
+                       for (i = 0; i < stmt->column_count; i++) {
+                               if (S->cols[i].data) {
+                                       switch (S->cols[i].dtype) {
+                                               case SQLT_BLOB:
+                                               case SQLT_CLOB:
+                                                       /* do nothing */
+                                                       break;
+                                               default:
+                                                       efree(S->cols[i].data);
+                                       }
+                               }
+                       }
+                       efree(S->cols);
+               }
 
                S->cols = ecalloc(colcount, sizeof(pdo_oci_column));
        }
@@ -274,7 +291,7 @@
                                                P->oci_type = SQLT_CHR;
                                                value_sz = param->max_value_len;
                                                if (param->max_value_len == 0) {
-                                                       value_sz = 4000; /* 
maximum size before value is interpreted as a LONG value */
+                                                       value_sz = 1332; /* 
maximum size before value is interpreted as a LONG value */
                                                }
                                                
                                }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to