dev-perl/DBD-mysql: Bump to version 4.44.0

- Remove embedded support
  - https://bugs.gentoo.org/644174
  - https://bugs.gentoo.org/598048
  - removal from older versions may happen later

Upstream:
- Fix for CVE-2017-10788 ( https://bugs.gentoo.org/623632 )
- Fix for CVE-2017-10789 ( https://bugs.gentoo.org/623942 )
- Enforce SSL settings for BACKRONYM and Riddle
- Fix parsing of mysql_config --libs output  in Configure
- Return INTs with ZEROFILL as strings
- Some fixes for 5.26-dot-in-inc

Bug: https://bugs.gentoo.org/598048
Bug: https://bugs.gentoo.org/623632
Bug: https://bugs.gentoo.org/623942
Bug: https://bugs.gentoo.org/644174
Package-Manager: Portage-2.3.18, Repoman-2.3.6
This commit is contained in:
Kent Fredric
2018-01-24 17:33:33 +13:00
parent f77afa38d6
commit 0d845674de
4 changed files with 272 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
DIST_AUTHOR=CAPTTOFU
DIST_VERSION=4.044
inherit eutils perl-module
DESCRIPTION="MySQL driver for the Perl5 Database Interface (DBI)"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
IUSE="test +ssl"
RDEPEND=">=dev-perl/DBI-1.609.0
virtual/libmysqlclient:=
"
DEPEND="${RDEPEND}
virtual/perl-ExtUtils-MakeMaker
virtual/perl-Data-Dumper
test? (
dev-perl/Test-Deep
>=virtual/perl-Test-Simple-0.900.0
virtual/perl-Time-HiRes
)
"
PATCHES=(
"${FILESDIR}/${PN}-${DIST_VERSION}-amvis-type-conversions.patch"
"${FILESDIR}/${PN}-${DIST_VERSION}-no-dot-inc.patch"
"${FILESDIR}/4.041-mariadb-10.2.patch"
)
src_configure() {
if use test; then
myconf="${myconf} --testdb=test \
--testhost=localhost \
--testuser=test \
--testpassword=test"
fi
myconf="${myconf} --$(usex ssl ssl nossl)"
perl-module_src_configure
}
# Parallel testing is broken as 2 tests create the same table
# and mysql isn't acid compliant and can't limit visibility of tables
# to a transaction...
DIST_TEST="do"
src_test() {
einfo
einfo "If tests fail, you have to configure your MySQL instance to create"
einfo "and grant some privileges to the test user."
einfo "You can run the following commands at the MySQL prompt: "
einfo "> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';"
einfo "> CREATE DATABASE test;"
einfo "> GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"
einfo
sleep 5
perl_rm_files t/pod.t t/manifest.t
# Don't be a hero and try to do EXTENDED_TESTING=1 unless you can figure
# out why 60leaks.t fails
perl-module_src_test
}

View File

@@ -2,3 +2,4 @@ DIST DBD-mysql-4.032.tar.gz 146476 BLAKE2B 3ace983522e273cdb18352d2fa87702222594
DIST DBD-mysql-4.037.tar.gz 146639 BLAKE2B fbecca7302cd6ea0386116a1824a7696f87f681dbfcd88970b1a5eab54639e46471fc07b37bd8c0158b3eca02d05dad159e11027daa5ab46eaa307b530f7c58e SHA512 3bda6ea18d29e32028b7eb93cd06fdbabbadafa66f982556298a68980c42a7b5236872113696e6d2df66a345049d1e63bc90ab358c8631f0cbea187780e514af
DIST DBD-mysql-4.041.tar.gz 150508 BLAKE2B 900ccc4ad9bc5bfb236c66774a6c9529beed3568c3f3626afcbb572fa530a2488ee8e05b1dabd169a775f28d634321dd3e86923e2829e019943a9f3054b1e887 SHA512 8663c58f1dec273869ef5d3ee663d80cb36fa87b1956318fff07a4a801aaecc395510a8f31b7a51b823f7e9d6a73ebf13894c1b7f7b27fdc3f3956e6aba34777
DIST DBD-mysql-4.042.tar.gz 160028 BLAKE2B ef2f9d6508a473c34275ae9d7233863698ab502d837975f08593d2d1ca9761081ffb84bafc5a02c572e2a6b4d54dd7c8312e476e0719733166f8edc030a016de SHA512 fe3c9e1e325f7056da783e0ea33f9a7810f25f3d9cd2c9a4bf4037b20a2148f2291b2f90d44730e63c7902b45e26993a7f9fcf1b3bf8d1bc5d3fca99893a019e
DIST DBD-mysql-4.044.tar.gz 155006 BLAKE2B 2934224010bb09aaff9a334b25038a4c7d1eb5552f6ad2b73f44aa7e2d8cb3684644773a89f35363c156cf40867a28943320e1b8b7ef4b9d4b8ac0f6b2417b38 SHA512 e3dd9482e8f78c19dc91baba07e39e266f113ce5a014cfe6c5989c96ed0f85723a17ba6a6e00b65a1ed3c62362400bd3779eb63ed282f73587b4757da249af02

View File

@@ -0,0 +1,56 @@
From eb7eddaa2341b853df045ad4a3690c60fc38c6c8 Mon Sep 17 00:00:00 2001
From: Pali <pali@cpan.org>
Date: Fri, 24 Feb 2017 19:51:36 +0100
Subject: Fix type conversions
Calling SvNV() for magical scalar is not enough for float type conversion.
It caused problem for Amavis in tainted mode -- all float values were zero.
On the other hand SvIV() and SvUV() seems to work fine. To be sure that
correct value of float is in scalar use sv_setnv() with explicit NV float
value. Similar code is changed also for integers IV/UV.
This patch should fix reported Amavis bug:
https://github.com/perl5-dbi/DBD-mysql/issues/78
See also reported perl bug about SvNV():
https://rt.perl.org/Public/Bug/Display.html?id=130801
Bugs: https://github.com/perl5-dbi/DBD-mysql/issues/78
Bugs-Debian: https://bugs.debian.org/856064
---
dbdimp.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/dbdimp.c b/dbdimp.c
index 9c33994..7fdfba1 100644
--- a/dbdimp.c
+++ b/dbdimp.c
@@ -4380,8 +4380,7 @@ process:
if (!(fields[i].flags & ZEROFILL_FLAG))
{
/* Coerce to dobule and set scalar as NV */
- (void) SvNV(sv);
- SvNOK_only(sv);
+ sv_setnv(sv, SvNV(sv));
}
break;
@@ -4392,13 +4391,11 @@ process:
/* Coerce to integer and set scalar as UV resp. IV */
if (fields[i].flags & UNSIGNED_FLAG)
{
- (void) SvUV(sv);
- SvIOK_only_UV(sv);
+ sv_setuv(sv, SvUV(sv));
}
else
{
- (void) SvIV(sv);
- SvIOK_only(sv);
+ sv_setiv(sv, SvIV(sv));
}
}
break;
--
2.15.1

View File

@@ -0,0 +1,151 @@
From 35931a7465f19da53b97cd1bc5369a69aeac2ff6 Mon Sep 17 00:00:00 2001
From: Pali <pali@cpan.org>
Date: Mon, 17 Apr 2017 21:38:58 +0200
Subject: Fix tests on Perl On 5.25.10 or greater with
-Ddefault_inc_excludes_dot
Some tests do not include dot in %INC and fails with error:
Can't locate t/lib.pl in @INC
Fixes: https://rt.cpan.org/Public/Bug/Display.html?id=120709
---
t/40server_prepare_crash.t | 3 ++-
t/lib.pl | 5 +++--
t/rt118977-zerofill.t | 2 +-
t/rt25389-bin-case.t | 3 ++-
t/rt50304-column_info_parentheses.t | 3 ++-
t/rt61849-bind-param-buffer-overflow.t | 3 ++-
t/rt75353-innodb-lock-timeout.t | 3 ++-
t/rt83494-quotes-comments.t | 3 ++-
8 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/t/40server_prepare_crash.t b/t/40server_prepare_crash.t
index df6e2b3..e2c8c9f 100644
--- a/t/40server_prepare_crash.t
+++ b/t/40server_prepare_crash.t
@@ -5,7 +5,8 @@ use Test::More;
use DBI;
use vars qw($test_dsn $test_user $test_password);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
my $dbh = eval { DBI->connect($test_dsn, $test_user, $test_password, { PrintError => 1, RaiseError => 1, AutoCommit => 0, mysql_server_prepare => 1, mysql_server_prepare_disable_fallback => 1 }) };
plan skip_all => "no database connection" if $@ or not $dbh;
diff --git a/t/lib.pl b/t/lib.pl
index 2221c40..0c756a0 100644
--- a/t/lib.pl
+++ b/t/lib.pl
@@ -2,6 +2,7 @@ use strict;
use warnings;
use Test::More;
+use File::Spec ();
use DBI::Const::GetInfoType;
use vars qw($mdriver $dbdriver $childPid $test_dsn $test_user $test_password);
@@ -31,7 +32,7 @@ if (-f ($file = "t/$dbdriver.dbtest") ||
-f ($file = "$dbdriver.dbtest") ||
-f ($file = "../tests/$dbdriver.dbtest") ||
-f ($file = "tests/$dbdriver.dbtest")) {
- eval { require $file; };
+ eval { require File::Spec->rel2abs($file); };
if ($@) {
print STDERR "Cannot execute $file: $@.\n";
print "1..0\n";
@@ -45,7 +46,7 @@ if (-f ($file = "t/$mdriver.mtest") ||
-f ($file = "$mdriver.mtest") ||
-f ($file = "../tests/$mdriver.mtest") ||
-f ($file = "tests/$mdriver.mtest")) {
- eval { require $file; };
+ eval { require File::Spec->rel2abs($file); };
if ($@) {
print STDERR "Cannot execute $file: $@.\n";
print "1..0\n";
diff --git a/t/rt118977-zerofill.t b/t/rt118977-zerofill.t
index 27ba1b7..86edb8e 100644
--- a/t/rt118977-zerofill.t
+++ b/t/rt118977-zerofill.t
@@ -5,7 +5,7 @@ use Test::More;
use DBI;
use vars qw($test_dsn $test_user $test_password);
-require "t/lib.pl";
+require "./t/lib.pl";
my $dbh = eval { DBI->connect($test_dsn, $test_user, $test_password, { PrintError => 1, RaiseError => 1 }) };
plan skip_all => "no database connection" if $@ or not $dbh;
diff --git a/t/rt25389-bin-case.t b/t/rt25389-bin-case.t
index 37bffb9..9d091b3 100644
--- a/t/rt25389-bin-case.t
+++ b/t/rt25389-bin-case.t
@@ -4,7 +4,8 @@ use warnings;
use DBI;
use vars qw($test_dsn $test_user $test_password);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
use Test::More;
diff --git a/t/rt50304-column_info_parentheses.t b/t/rt50304-column_info_parentheses.t
index 5b6d799..8c31bf6 100644
--- a/t/rt50304-column_info_parentheses.t
+++ b/t/rt50304-column_info_parentheses.t
@@ -4,7 +4,8 @@ use warnings;
use DBI;
use vars qw($test_dsn $test_user $test_password $state);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
use Test::More;
diff --git a/t/rt61849-bind-param-buffer-overflow.t b/t/rt61849-bind-param-buffer-overflow.t
index 99a4ccc..494f985 100644
--- a/t/rt61849-bind-param-buffer-overflow.t
+++ b/t/rt61849-bind-param-buffer-overflow.t
@@ -5,7 +5,8 @@ use Test::More;
use DBI;
use vars qw($test_dsn $test_user $test_password);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
my $INSECURE_VALUE_FROM_USER = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
diff --git a/t/rt75353-innodb-lock-timeout.t b/t/rt75353-innodb-lock-timeout.t
index 69b740e..41d1b8f 100644
--- a/t/rt75353-innodb-lock-timeout.t
+++ b/t/rt75353-innodb-lock-timeout.t
@@ -5,7 +5,8 @@ use Test::More;
use DBI;
use vars qw($test_dsn $test_user $test_password);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
my $dbh1 = eval { DBI->connect($test_dsn, $test_user, $test_password, { RaiseError => 1, AutoCommit => 0 }) };
plan skip_all => "no database connection" if $@ or not $dbh1;
diff --git a/t/rt83494-quotes-comments.t b/t/rt83494-quotes-comments.t
index 9df0d90..c42afe4 100644
--- a/t/rt83494-quotes-comments.t
+++ b/t/rt83494-quotes-comments.t
@@ -9,7 +9,8 @@ use DBI;
use Test::More;
use vars qw($test_dsn $test_user $test_password $state);
-require "t/lib.pl";
+use lib 't', '.';
+require "lib.pl";
my $dbh;
eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password,
--
2.15.1