dev-php/pecl-ssh2: Revbump to include upstream patch for 5.6; wrt bug 603290
authorBrian Evans <grknight@gentoo.org>
Wed, 5 Jul 2017 02:27:36 +0000 (22:27 -0400)
committerBrian Evans <grknight@gentoo.org>
Wed, 5 Jul 2017 02:27:36 +0000 (22:27 -0400)
Package-Manager: Portage-2.3.6, Repoman-2.3.2

dev-php/pecl-ssh2/files/0.13-parse_url-fix.patch [new file with mode: 0644]
dev-php/pecl-ssh2/pecl-ssh2-0.13-r3.ebuild [new file with mode: 0644]

diff --git a/dev-php/pecl-ssh2/files/0.13-parse_url-fix.patch b/dev-php/pecl-ssh2/files/0.13-parse_url-fix.patch
new file mode 100644 (file)
index 0000000..c9c052f
--- /dev/null
@@ -0,0 +1,49 @@
+From 093906ec1c065e86ad1cd4dabbc89b1ccae11938 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Thu, 10 Nov 2016 09:16:02 +0100
+Subject: [PATCH] fix for PHP 7.0.13 where php_url_parse fails
+
+---
+ ssh2_fopen_wrappers.c | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/ssh2_fopen_wrappers.c b/ssh2_fopen_wrappers.c
+index 8472ddd..89b34eb 100644
+--- a/ssh2_fopen_wrappers.c
++++ b/ssh2_fopen_wrappers.c
+@@ -198,10 +198,20 @@ php_url *php_ssh2_fopen_wraper_parse_path(       char *path, char *type, php_stream_co
+       php_url *resource;
+       zval *methods = NULL, *callbacks = NULL, zsession, **tmpzval;
+       long resource_id;
+-      char *s, *username = NULL, *password = NULL, *pubkey_file = NULL, *privkey_file = NULL;
++      char *h, *s, *username = NULL, *password = NULL, *pubkey_file = NULL, *privkey_file = NULL;
+       int username_len = 0, password_len = 0;
+-      resource = php_url_parse(path);
++      h = strstr(path, "Resource id #");
++      if (h) {
++              /* Starting with 5.6.28, 7.0.13 need to be clean, else php_url_parse will fail */
++              char *tmp = estrdup(path);
++
++              strncpy(tmp + (h-path), h + sizeof("Resource id #")-1, strlen(tmp)-sizeof("Resource id #"));
++              resource = php_url_parse(tmp);
++              efree(tmp);
++      } else {
++              resource = php_url_parse(path);
++      }
+       if (!resource || !resource->path) {
+               return NULL;
+       }
+@@ -232,9 +242,6 @@ php_url *php_ssh2_fopen_wraper_parse_path( char *path, char *type, php_stream_co
+       /* Look for a resource ID to reuse a session */
+       s = resource->host;
+-      if (strncmp(resource->host, "Resource id #", sizeof("Resource id #") - 1) == 0) {
+-              s = resource->host + sizeof("Resource id #") - 1;
+-      }
+       if (is_numeric_string(s, strlen(s), &resource_id, NULL, 0) == IS_LONG) {
+               php_ssh2_sftp_data *sftp_data;
+-- 
+2.1.4
+
diff --git a/dev-php/pecl-ssh2/pecl-ssh2-0.13-r3.ebuild b/dev-php/pecl-ssh2/pecl-ssh2-0.13-r3.ebuild
new file mode 100644 (file)
index 0000000..ad10daa
--- /dev/null
@@ -0,0 +1,31 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PHP_EXT_NAME="ssh2"
+
+USE_PHP="php5-6 php7-0 php7-1"
+
+inherit php-ext-pecl-r3
+
+USE_PHP="php5-6"
+
+DESCRIPTION="PHP bindings for the libssh2 library"
+LICENSE="PHP-3.01"
+SLOT="0"
+IUSE=""
+KEYWORDS="~amd64 ~x86"
+DEPEND="net-libs/libssh2"
+RDEPEND="${DEPEND}"
+PDEPEND="php_targets_php7-0? ( dev-php/pecl-ssh2:7 )
+       php_targets_php7-1? ( dev-php/pecl-ssh2:7 )"
+
+src_prepare(){
+       if use php_targets_php5-6 ; then
+               local PATCHES=( "${FILESDIR}/0.13-parse_url-fix.patch" )
+               php-ext-source-r3_src_prepare
+       else
+               default_src_prepare
+       fi
+}