Update to 4.0.29 and fix a use-after-free (reported upstream).
 Comments ? Ok ?
  Cheers
   Giovanni
Index: Makefile
===================================================================
RCS file: /var/cvs/ports/databases/p5-DBD-mysql/Makefile,v
retrieving revision 1.41
diff -u -p -r1.41 Makefile
--- Makefile    6 Dec 2014 14:26:44 -0000       1.41
+++ Makefile    27 Dec 2014 22:43:03 -0000
@@ -4,7 +4,7 @@ SHARED_ONLY=            Yes
 
 COMMENT=               MySQL drivers for the Perl DBI
 
-DISTNAME=              DBD-mysql-4.028
+DISTNAME=              DBD-mysql-4.029
 CATEGORIES=            databases
 
 MAINTAINER=            Giovanni Bechis <giova...@openbsd.org>
Index: distinfo
===================================================================
RCS file: /var/cvs/ports/databases/p5-DBD-mysql/distinfo,v
retrieving revision 1.20
diff -u -p -r1.20 distinfo
--- distinfo    6 Dec 2014 14:26:44 -0000       1.20
+++ distinfo    27 Dec 2014 22:43:11 -0000
@@ -1,2 +1,2 @@
-SHA256 (DBD-mysql-4.028.tar.gz) = WEKySv/avOixcSL5EM1bWyU78mbX5QhK9d9CSFI4Ee0=
-SIZE (DBD-mysql-4.028.tar.gz) = 138614
+SHA256 (DBD-mysql-4.029.tar.gz) = pJ0cG8+swJzy0fpjiuZTwubFjrwIFgkwaSKCqxhz1Qw=
+SIZE (DBD-mysql-4.029.tar.gz) = 139722
Index: patches/patch-dbdimp_c
===================================================================
RCS file: patches/patch-dbdimp_c
diff -N patches/patch-dbdimp_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-dbdimp_c      16 Jan 2015 08:13:35 -0000
@@ -0,0 +1,31 @@
+$OpenBSD$
+Fix a use-after-free if my_login fails
+
+--- dbdimp.c.orig      Mon Dec  8 09:44:50 2014
++++ dbdimp.c   Sun Dec 28 00:40:38 2014
+@@ -2061,8 +2061,11 @@ static int my_login(pTHX_ SV* dbh, imp_dbh_t *imp_dbh)
+   result = mysql_dr_connect(dbh, imp_dbh->pmysql, mysql_socket, host, port, 
user,
+                         password, dbname, imp_dbh) ? TRUE : FALSE;
+   if (fresh && !result) {
++      do_error(dbh, mysql_errno(imp_dbh->pmysql),
++              mysql_error(imp_dbh->pmysql) ,mysql_sqlstate(imp_dbh->pmysql));
+       /* Prevent leaks, but do not free in case of a reconnect. See #97625 */
+       Safefree(imp_dbh->pmysql);
++      imp_dbh->pmysql = NULL;
+   }
+   return result;
+ }
+@@ -4953,9 +4956,11 @@ int mysql_db_reconnect(SV* h)
+    */
+   if (!dbd_db_disconnect(h, imp_dbh) || !my_login(aTHX_ h, imp_dbh))
+   {
+-    do_error(h, mysql_errno(imp_dbh->pmysql), mysql_error(imp_dbh->pmysql),
++    if(!imp_dbh->pmysql) {
++      do_error(h, mysql_errno(imp_dbh->pmysql), mysql_error(imp_dbh->pmysql),
+              mysql_sqlstate(imp_dbh->pmysql));
+-    memcpy (imp_dbh->pmysql, &save_socket, sizeof(save_socket));
++      memcpy (imp_dbh->pmysql, &save_socket, sizeof(save_socket));
++    }
+     ++imp_dbh->stats.auto_reconnects_failed;
+     return FALSE;
+   }
Index: pkg/PLIST
===================================================================
RCS file: /var/cvs/ports/databases/p5-DBD-mysql/pkg/PLIST,v
retrieving revision 1.7
diff -u -p -r1.7 PLIST
--- pkg/PLIST   11 Jul 2014 14:11:12 -0000      1.7
+++ pkg/PLIST   27 Dec 2014 22:47:44 -0000
@@ -2,13 +2,13 @@
 @comment ${P5ARCH}/Bundle/DBD/
 @comment ${P5ARCH}/Bundle/DBD/mysql.pm
 @comment ${P5ARCH}/DBD/README.pod
+@comment ${P5ARCH}/DBD/mysql/INSTALL.pod
+@comment ${P5ARCH}/auto/DBD/mysql/mysql.bs
 ${P5ARCH}/DBD/mysql/
 ${P5ARCH}/DBD/mysql.pm
 ${P5ARCH}/DBD/mysql/GetInfo.pm
-@comment ${P5ARCH}/DBD/mysql/INSTALL.pod
 ${P5ARCH}/auto/DBD/
 ${P5ARCH}/auto/DBD/mysql/
-@comment ${P5ARCH}/auto/DBD/mysql/mysql.bs
 ${P5ARCH}/auto/DBD/mysql/mysql.so
 @man man/man3p/Bundle::DBD::mysql.3p
 @man man/man3p/DBD::README.3p

Reply via email to