Update to 4.0.29 and fix a use-after-free

ok brad@
This commit is contained in:
giovanni 2015-01-17 00:42:16 +00:00
parent 957d7fe347
commit 5b47f36e86
4 changed files with 38 additions and 7 deletions

View File

@ -1,10 +1,10 @@
# $OpenBSD: Makefile,v 1.41 2014/12/06 14:26:44 giovanni Exp $
# $OpenBSD: Makefile,v 1.42 2015/01/17 00:42:16 giovanni Exp $
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 <giovanni@openbsd.org>

View File

@ -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

View File

@ -0,0 +1,31 @@
$OpenBSD: patch-dbdimp_c,v 1.1 2015/01/17 00:42:16 giovanni Exp $
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;
}

View File

@ -1,14 +1,14 @@
@comment $OpenBSD: PLIST,v 1.7 2014/07/11 14:11:12 giovanni Exp $
@comment $OpenBSD: PLIST,v 1.8 2015/01/17 00:42:16 giovanni Exp $
@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