[svn:dbd-oracle] r15355 - in dbd-oracle/trunk: . lib/DBD

[email protected] Mon, 6 Aug 2012 03:30:55 -0700 (PDT)
Newsgroups perl.dbd.oracle.changes
Message-ID <[email protected]>
Author: mjevans
Date: Mon Aug  6 03:30:51 2012
New Revision: 15355

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/lib/DBD/Oracle.pm
   dbd-oracle/trunk/oci8.c

Log:
fix serious memory corription in TAF handling
hide some lower packages from PAUSE


Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes	(original)
+++ dbd-oracle/trunk/Changes	Mon Aug  6 03:30:51 2012
@@ -1,5 +1,15 @@
 Revision history for DBD::Oracle
 
+NEXTRELEASE
+
+  [BUG FIXES]
+
+  - fix serious memory corruption in TAF support (Martin J. Evans)
+
+  [MISCELLANEOUS]
+
+  - hide dr, db and st packages from PAUSE
+
 1.47_00   2012-07-11
 
   [BUG FIXES]
@@ -14,7 +24,7 @@
     Martin J. Evans
 
   [DOCUMENTATION]
-  - Promoted the troubleshooting for the different architectures to 
+  - Promoted the troubleshooting for the different architectures to
     POD documents, for easier/prettier access.
 
   - Added a troubleshooting entry for RT71819 - bound output

Modified: dbd-oracle/trunk/lib/DBD/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/lib/DBD/Oracle.pm	(original)
+++ dbd-oracle/trunk/lib/DBD/Oracle.pm	Mon Aug  6 03:30:51 2012
@@ -123,7 +123,8 @@
 }
 
 
-{   package DBD::Oracle::dr;
+{   package                     # hide from PAUSE
+    DBD::Oracle::dr;
 {
   $DBD::Oracle::dr::VERSION = '1.47_00';
 }
@@ -328,7 +329,8 @@
 }
 
 
-{   package DBD::Oracle::db;
+{   package                     # hide from PAUSE
+    DBD::Oracle::db;
 {
   $DBD::Oracle::db::VERSION = '1.47_00';
 }
@@ -753,7 +755,7 @@
 	    }
 	}
 	$SQL .= " ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION\n";
-        
+
 
         # Since DATA_DEFAULT is a LONG, DEFAULT values longer than 80 chars will
         # throw an ORA-24345 by default; so we check if LongReadLen is set at
@@ -1057,7 +1059,8 @@
 }   # end of package DBD::Oracle::db
 
 
-{   package DBD::Oracle::st;
+{   package                     # hide from PAUSE
+    DBD::Oracle::st;
 {
   $DBD::Oracle::st::VERSION = '1.47_00';
 }
@@ -1134,19 +1137,19 @@
        return $sth->set_err($DBI::stderr, "executing $tuple_count generated $err_count errors")
        	   if $err_count;
 
-       return wantarray 
+       return wantarray
                 ? ($tuple_count, defined $row_count ? $row_count : undef)
                 : $tuple_count;
 
     }
 
     sub private_attribute_info {
-        return { map { $_ => undef } qw/ 
-            ora_lengths 
-            ora_types 
+        return { map { $_ => undef } qw/
+            ora_lengths
+            ora_types
             ora_rowid
-            ora_est_row_width 
-            ora_type 
+            ora_est_row_width
+            ora_type
             ora_fail_over
         / };
    }

Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c	(original)
+++ dbd-oracle/trunk/oci8.c	Mon Aug  6 03:30:51 2012
@@ -1144,7 +1144,7 @@
             /* MJE commented out as we are avoiding DBIS now but as this is
                an Oracle callback there is no way to pass something non
                OCI into this func.
-               
+
 			if (DBIS->debug >= 3 || dbd_verbose >= 3 )
 				PerlIO_printf(DBILOGFP, "		in  '%s' [%lu,%lu]: len %2lu, ind %d%s, value=%s\n",
 					phs->name, ul_t(iter), ul_t(index), ul_t(phs->alen), phs->indp,
@@ -1320,12 +1320,12 @@
 	return_count = call_pv(cb->function, G_SCALAR);
 
     SPAGAIN;
-    
+
     if (return_count != 1)
         croak("Expected one scalar back from taf handler");
 
     ret = POPi;
-    
+
 	switch (fo_event){
 
 		case OCI_FO_BEGIN:
@@ -1350,7 +1350,7 @@
 		}
 	}
     PUTBACK;
-    
+
 	return 0;
 }
 
@@ -1364,7 +1364,7 @@
 	taf_callback_t  *cb = NULL;
 /*allocate space for the callback */
 	Newz(1, cb, 1, taf_callback_t);
-	cb->function= (char*)safemalloc(strlen(imp_dbh->taf_function));
+	cb->function= (char*)safemalloc(strlen(imp_dbh->taf_function) + 1);
 	cb->sleep   = imp_dbh->taf_sleep;
 	strcpy((char *)cb->function,imp_dbh->taf_function);