commit:     68c431909ba4139a210bf5d75da20815ef4476a5
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 14:52:52 2020 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sun Nov 15 15:31:20 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=68c43190

dev-php/pecl-ssh2: fix SizeViolation issue

Closes: https://bugs.gentoo.org/748177
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 dev-php/pecl-ssh2/Manifest                         |   1 +
 .../files/pecl-ssh2-1.1.2-fix-php7-port.patch      | 746 ---------------------
 dev-php/pecl-ssh2/pecl-ssh2-1.1.2.ebuild           |   7 +-
 3 files changed, 5 insertions(+), 749 deletions(-)

diff --git a/dev-php/pecl-ssh2/Manifest b/dev-php/pecl-ssh2/Manifest
index b87e771ebe2..9c1db73d692 100644
--- a/dev-php/pecl-ssh2/Manifest
+++ b/dev-php/pecl-ssh2/Manifest
@@ -1,2 +1,3 @@
+DIST pecl-ssh2-1.1.2-fix-php7-port.patch 27860 BLAKE2B 
23054187608bdcf79f53ce638e37c646f44297aa7d1e8f7a7c85fd922977ab835b915d541fbae327a30d2e863b503ed4822a82c1b242346290ceb94d49c97020
 SHA512 
1c2ecc990323a77fb2b69be0d6649f96dd7ad2d06c62f4fcb79a9ef4f89e066d463301668a044d37d717c99837c5d7d3f621f61119543445bd05c3229d9270e9
 DIST pecl-ssh2-1.2.tar.gz 32447 BLAKE2B 
3a9d0f205097a381d07fb9dd5ab4dcb8e361f555dbc633abb8fa895c83024b70e85cd87602da1ceeb1018a7b07c474720b02810ef0689e9294fc33b129b6c738
 SHA512 
7b7d311cd5f88835e124d70a0295468f75d0fa6936a58808c936d1a185bb630b9e02c21f49b4bd777194a7b104aa3ff85c4fbf480f43d5906787e532ba2d3e04
 DIST ssh2-1.1.2.tgz 32057 BLAKE2B 
88ffb3fb608687a086bbe345677982e944210791acc100312ba56ac7c35188a52cde5529d78caf473d19710e9965fba853ea9ff046715413a0b488ae2d8b690c
 SHA512 
36793191448745b8a9b3cc628fe9fb431480792c7a2ff0bf2eccd58cda1cf944933be1d301c455d4a6f3dabf7e04ffef248bc402a8ff99bfafcba0deddb25c36

diff --git a/dev-php/pecl-ssh2/files/pecl-ssh2-1.1.2-fix-php7-port.patch 
b/dev-php/pecl-ssh2/files/pecl-ssh2-1.1.2-fix-php7-port.patch
deleted file mode 100644
index 9d4f9bd166e..00000000000
--- a/dev-php/pecl-ssh2/files/pecl-ssh2-1.1.2-fix-php7-port.patch
+++ /dev/null
@@ -1,746 +0,0 @@
-From 073067ba96ac99ed5696d27f13ca6c8124986e74 Mon Sep 17 00:00:00 2001
-From: Jan-E <[email protected]>
-Date: Thu, 28 Jun 2018 08:43:48 +0200
-Subject: [PATCH] @dstogov Fixed PHP7 port. Restored commented reference
- counting.
-
----
- php_ssh2.h            |  14 +++---
- ssh2.c                |  26 +++++-----
- ssh2_fopen_wrappers.c | 129 ++++++++++++++++++++++----------------------------
- ssh2_sftp.c           |  59 ++++++++++-------------
- 4 files changed, 102 insertions(+), 126 deletions(-)
-
-diff --git a/php_ssh2.h b/php_ssh2.h
-index d010ff9..2bbaa26 100644
---- a/php_ssh2.h
-+++ b/php_ssh2.h
-@@ -73,14 +73,14 @@ typedef struct _php_ssh2_sftp_data {
-       LIBSSH2_SESSION *session;
-       LIBSSH2_SFTP *sftp;
- 
--      int session_rsrcid;
-+      zend_resource *session_rsrc;
- } php_ssh2_sftp_data;
- 
- typedef struct _php_ssh2_listener_data {
-       LIBSSH2_SESSION *session;
-       LIBSSH2_LISTENER *listener;
- 
--      int session_rsrcid;
-+      zend_resource *session_rsrc;
- } php_ssh2_listener_data;
- 
- #include "libssh2_publickey.h"
-@@ -89,7 +89,7 @@ typedef struct _php_ssh2_pkey_subsys_data {
-       LIBSSH2_SESSION *session;
-       LIBSSH2_PUBLICKEY *pkey;
- 
--      int session_rsrcid;
-+      zend_resource *session_rsrc;
- } php_ssh2_pkey_subsys_data;
- 
- #define SSH2_FETCH_NONAUTHENTICATED_SESSION(session, zsession) \
-@@ -118,8 +118,8 @@ typedef struct _php_ssh2_channel_data {
-       char is_blocking;
-       long timeout;
- 
--      /* Resource ID */
--      int session_rsrcid;
-+      /* Resource */
-+      zend_resource *session_rsrc;
- 
-       /* Allow one stream to be closed while the other is kept open */
-       unsigned char *refcount;
-@@ -151,8 +151,8 @@ PHP_FUNCTION(ssh2_sftp_realpath);
- LIBSSH2_SESSION *php_ssh2_session_connect(char *host, int port, zval 
*methods, zval *callbacks);
- void php_ssh2_sftp_dtor(zend_resource *rsrc);
- php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, 
php_stream_context *context,
--                                                                              
        LIBSSH2_SESSION **psession, int *presource_id,
--                                                                              
        LIBSSH2_SFTP **psftp, int *psftp_rsrcid);
-+                                                                              
        LIBSSH2_SESSION **psession, zend_resource **presource,
-+                                                                              
        LIBSSH2_SFTP **psftp, zend_resource **psftp_rsrc);
- 
- extern php_stream_ops php_ssh2_channel_stream_ops;
- 
-diff --git a/ssh2.c b/ssh2.c
-index e73867e..849766b 100644
---- a/ssh2.c
-+++ b/ssh2.c
-@@ -772,9 +772,8 @@ PHP_FUNCTION(ssh2_forward_listen)
- 
-       data = emalloc(sizeof(php_ssh2_listener_data));
-       data->session = session;
--      data->session_rsrcid = Z_LVAL_P(zsession);
--      //TODO Sean-Der
--      //zend_list_addref(data->session_rsrcid);
-+      data->session_rsrc = Z_RES_P(zsession);
-+      Z_ADDREF_P(zsession);
-       data->listener = listener;
- 
-       RETURN_RES(zend_register_resource(data, le_ssh2_listener));
-@@ -810,7 +809,7 @@ PHP_FUNCTION(ssh2_forward_accept)
-       channel_data->channel = channel;
-       channel_data->streamid = 0;
-       channel_data->is_blocking = 0;
--      channel_data->session_rsrcid = data->session_rsrcid;
-+      channel_data->session_rsrc = data->session_rsrc;
-       channel_data->refcount = NULL;
- 
-       stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 
0, "r+");
-@@ -820,8 +819,12 @@ PHP_FUNCTION(ssh2_forward_accept)
-               libssh2_channel_free(channel);
-               RETURN_FALSE;
-       }
--      //TODO Sean-Der
--      //zend_list_addref(channel_data->session_rsrcid);
-+
-+#if PHP_VERSION_ID < 70300
-+      GC_REFCOUNT(channel_data->session_rsrc)++;
-+#else
-+      GC_ADDREF(channel_data->session_rsrc);
-+#endif
- 
-       php_stream_to_zval(stream, return_value);
- }
-@@ -975,9 +978,8 @@ PHP_FUNCTION(ssh2_publickey_init)
- 
-       data = emalloc(sizeof(php_ssh2_pkey_subsys_data));
-       data->session = session;
--      data->session_rsrcid = Z_RES_P(zsession)->handle;
--      //TODO Sean-Der
--      //zend_list_addref(data->session_rsrcid);
-+      data->session_rsrc = Z_RES_P(zsession);
-+      Z_ADDREF_P(zsession);
-       data->pkey = pkey;
- 
-       RETURN_RES(zend_register_resource(data, le_ssh2_pkey_subsys));
-@@ -1280,8 +1282,7 @@ static void php_ssh2_listener_dtor(zend_resource *rsrc)
-       LIBSSH2_LISTENER *listener = data->listener;
- 
-       libssh2_channel_forward_cancel(listener);
--      // TODO Sean-Der
--      //zend_list_delete(data->session_rsrcid);
-+      zend_list_delete(data->session_rsrc);
-       efree(data);
- }
- 
-@@ -1291,8 +1292,7 @@ static void php_ssh2_pkey_subsys_dtor(zend_resource 
*rsrc)
-       LIBSSH2_PUBLICKEY *pkey = data->pkey;
- 
-       libssh2_publickey_shutdown(pkey);
--      // TODO Sean-Der
--      //zend_list_delete(data->session_rsrcid);
-+      zend_list_delete(data->session_rsrc);
-       efree(data);
- }
- 
-diff --git a/ssh2_fopen_wrappers.c b/ssh2_fopen_wrappers.c
-index f2f3475..c4eb9dc 100644
---- a/ssh2_fopen_wrappers.c
-+++ b/ssh2_fopen_wrappers.c
-@@ -47,11 +47,9 @@ static size_t php_ssh2_channel_stream_write(php_stream 
*stream, const char *buf,
-       php_ssh2_channel_data *abstract = 
(php_ssh2_channel_data*)stream->abstract;
-       size_t writestate;
-       LIBSSH2_SESSION *session;
--      zval *zresource;
- 
-       libssh2_channel_set_blocking(abstract->channel, abstract->is_blocking);
--      zresource = 
php_ssh2_zval_from_resource_handle(abstract->session_rsrcid);
--      session = (LIBSSH2_SESSION *)zend_fetch_resource(Z_RES_P(zresource), 
PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-+      session = (LIBSSH2_SESSION 
*)zend_fetch_resource(abstract->session_rsrc, PHP_SSH2_SESSION_RES_NAME, 
le_ssh2_session);
- 
- 
- 
-@@ -90,12 +88,10 @@ static size_t php_ssh2_channel_stream_read(php_stream 
*stream, char *buf, size_t
-       php_ssh2_channel_data *abstract = 
(php_ssh2_channel_data*)stream->abstract;
-       ssize_t readstate;
-       LIBSSH2_SESSION *session;
--      zval *zresource;
- 
-       stream->eof = libssh2_channel_eof(abstract->channel);
-       libssh2_channel_set_blocking(abstract->channel, abstract->is_blocking);
--      zresource = 
php_ssh2_zval_from_resource_handle(abstract->session_rsrcid);
--      session = (LIBSSH2_SESSION *)zend_fetch_resource(Z_RES_P(zresource), 
PHP_SSH2_SESSION_RES_NAME, le_ssh2_session);
-+      session = (LIBSSH2_SESSION 
*)zend_fetch_resource(abstract->session_rsrc, PHP_SSH2_SESSION_RES_NAME, 
le_ssh2_session);
- 
- #ifdef PHP_SSH2_SESSION_TIMEOUT
-       if (abstract->is_blocking) {
-@@ -137,8 +133,7 @@ static int php_ssh2_channel_stream_close(php_stream 
*stream, int close_handle)
-               }
-               libssh2_channel_eof(abstract->channel);
-               libssh2_channel_free(abstract->channel);
--              //TODO Sean-Der
--              //zend_list_delete(abstract->session_rsrcid);
-+              zend_list_delete(abstract->session_rsrc);
-       }
-       efree(abstract);
- 
-@@ -207,8 +202,8 @@ php_stream_ops php_ssh2_channel_stream_ops = {
-  * Parse an ssh2.*:// path
-  */
- php_url *php_ssh2_fopen_wraper_parse_path(const char *path, char *type, 
php_stream_context *context,
--                                                                              
        LIBSSH2_SESSION **psession, int *presource_id,
--                                                                              
        LIBSSH2_SFTP **psftp, int *psftp_rsrcid)
-+                                                                              
        LIBSSH2_SESSION **psession, zend_resource **presource,
-+                                                                              
        LIBSSH2_SFTP **psftp, zend_resource **psftp_rsrc)
- {
-       php_ssh2_sftp_data *sftp_data = NULL;
-       LIBSSH2_SESSION *session;
-@@ -283,11 +278,10 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char 
*path, char *type, php_stre
-                       sftp_data = (php_ssh2_sftp_data 
*)zend_fetch_resource(Z_RES_P(zresource), PHP_SSH2_SFTP_RES_NAME, le_ssh2_sftp);
-                       if (sftp_data) {
-                               /* Want the sftp layer */
--                              //TODO Sean-Der
--                              //zend_list_addref(resource_id);
--                              *psftp_rsrcid = resource_id;
-+                              Z_ADDREF_P(zresource);
-+                              *psftp_rsrc = Z_RES_P(zresource);
-                               *psftp = sftp_data->sftp;
--                              *presource_id = sftp_data->session_rsrcid;
-+                              *presource = sftp_data->session_rsrc;
-                               *psession = sftp_data->session;
-                               return resource;
-                       }
-@@ -305,18 +299,16 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char 
*path, char *type, php_stre
-                               sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
-                               sftp_data->sftp = sftp;
-                               sftp_data->session = session;
--                              sftp_data->session_rsrcid = resource_id;
--                              //TODO Sean-Der
--                              //zend_list_addref(resource_id);
--                              *psftp_rsrcid = 
zend_register_resource(sftp_data, le_ssh2_sftp)->handle;
-+                              sftp_data->session_rsrc = Z_RES_P(zresource);
-+                              Z_ADDREF_P(zresource);
-+                              *psftp_rsrc = zend_register_resource(sftp_data, 
le_ssh2_sftp);
-                               *psftp = sftp;
--                              *presource_id = resource_id;
-+                              *presource = Z_RES_P(zresource);
-                               *psession = session;
-                               return resource;
-                       }
--                      //TODO Sean-Der
--                      //zend_list_addref(resource_id);
--                      *presource_id = resource_id;
-+                      Z_ADDREF_P(zresource);
-+                      *presource = Z_RES_P(zresource);
-                       *psession = session;
-                       return resource;
-               }
-@@ -330,9 +322,9 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char 
*path, char *type, php_stre
-               sftp_data = (php_ssh2_sftp_data 
*)zend_fetch_resource(Z_RES_P(tmpzval), PHP_SSH2_SFTP_RES_NAME, le_ssh2_sftp);
-               if (sftp_data) {
-                       Z_ADDREF_P(tmpzval);
--                      *psftp_rsrcid = Z_LVAL_P(tmpzval);
-+                      *psftp_rsrc = Z_RES_P(tmpzval);
-                       *psftp = sftp_data->sftp;
--                      *presource_id = sftp_data->session_rsrcid;
-+                      *presource = sftp_data->session_rsrc;
-                       *psession = sftp_data->session;
-                       return resource;
-               }
-@@ -354,17 +346,17 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char 
*path, char *type, php_stre
-                               sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
-                               sftp_data->sftp = sftp;
-                               sftp_data->session = session;
--                              sftp_data->session_rsrcid = Z_LVAL_P(tmpzval);
-+                              sftp_data->session_rsrc = Z_RES_P(tmpzval);
-                               Z_ADDREF_P(tmpzval);
--                              *psftp_rsrcid = 
zend_register_resource(sftp_data, le_ssh2_sftp)->handle;
-+                              *psftp_rsrc = zend_register_resource(sftp_data, 
le_ssh2_sftp);
-                               *psftp = sftp;
--                              *presource_id = Z_RES_P(tmpzval)->handle;
-+                              *presource = Z_RES_P(tmpzval);
-                               *psession = session;
-                               return resource;
-                       }
-                       Z_ADDREF_P(tmpzval);
-                       *psession = session;
--                      *presource_id = Z_LVAL_P(tmpzval);
-+                      *presource = Z_RES_P(tmpzval);
-                       return resource;
-               }
-       }
-@@ -465,8 +457,7 @@ php_url *php_ssh2_fopen_wraper_parse_path(const char 
*path, char *type, php_stre
- 
-       /* Auth failure */
-       php_url_free(resource);
--      //TODO Sean-Der
--      //zend_list_delete(Z_LVAL(zsession));
-+      zend_list_delete(Z_RES(zsession));
-       return NULL;
- 
- session_authed:
-@@ -480,24 +471,22 @@ session_authed:
-               sftp = libssh2_sftp_init(session);
-               if (!sftp) {
-                       php_url_free(resource);
--                      //TODO Sean-Der
--                      //zend_list_delete(Z_LVAL(zsession));
-+                      zend_list_delete(Z_RES(zsession));
-                       return NULL;
-               }
- 
-               sftp_data = emalloc(sizeof(php_ssh2_sftp_data));
-               sftp_data->session = session;
-               sftp_data->sftp = sftp;
--              sftp_data->session_rsrcid = Z_LVAL(zsession);
-+              sftp_data->session_rsrc = Z_RES(zsession);
- 
-               //TODO Sean-Der
-               //ZEND_REGISTER_RESOURCE(sftp_data, le_ssh2_sftp);
--              *psftp_rsrcid = Z_LVAL(zsftp);
-+              *psftp_rsrc = Z_RES(zsftp);
-               *psftp = sftp;
-       }
- 
--      //TODO may be undefined
--      *presource_id = Z_LVAL(zsession);
-+      *presource = Z_RES(zsession);
-       *psession = session;
- 
-       return resource;
-@@ -511,7 +500,7 @@ session_authed:
- /* {{{ php_ssh2_shell_open
-  * Make a stream from a session
-  */
--static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, int 
resource_id, char *term, int term_len, zval *environment, long width, long 
height, long type)
-+static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION *session, 
zend_resource *resource, char *term, int term_len, zval *environment, long 
width, long height, long type)
- {
-       LIBSSH2_CHANNEL *channel;
-       php_ssh2_channel_data *channel_data;
-@@ -578,7 +567,7 @@ static php_stream *php_ssh2_shell_open(LIBSSH2_SESSION 
*session, int resource_id
-       channel_data->streamid = 0;
-       channel_data->is_blocking = 0;
-       channel_data->timeout = 0;
--      channel_data->session_rsrcid = resource_id;
-+      channel_data->session_rsrc = resource;
-       channel_data->refcount = NULL;
- 
-       stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 
0, "r+");
-@@ -599,11 +588,12 @@ static php_stream 
*php_ssh2_fopen_wrapper_shell(php_stream_wrapper *wrapper, con
-       zend_long width = PHP_SSH2_DEFAULT_TERM_WIDTH;
-       zend_long height = PHP_SSH2_DEFAULT_TERM_HEIGHT;
-       zend_long type = PHP_SSH2_DEFAULT_TERM_UNIT;
--      int resource_id = 0, terminal_len = sizeof(PHP_SSH2_DEFAULT_TERMINAL) - 
1;
-+      zend_resource *rsrc = NULL;
-+      int terminal_len = sizeof(PHP_SSH2_DEFAULT_TERMINAL) - 1;
-       php_url *resource;
-       char *s;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(path, "shell", context, 
&session, &resource_id, NULL, NULL);
-+      resource = php_ssh2_fopen_wraper_parse_path(path, "shell", context, 
&session, &rsrc, NULL, NULL);
-       if (!resource || !session) {
-               return NULL;
-       }
-@@ -677,10 +667,9 @@ static php_stream 
*php_ssh2_fopen_wrapper_shell(php_stream_wrapper *wrapper, con
-       /* TODO: Accept resolution and environment vars as URL style parameters
-        * 
ssh2.shell://hostorresource/terminal/99x99c?envvar=envval&envvar=envval....
-        */
--      stream = php_ssh2_shell_open(session, resource_id, terminal, 
terminal_len, environment, width, height, type);
-+      stream = php_ssh2_shell_open(session, rsrc, terminal, terminal_len, 
environment, width, height, type);
-       if (!stream) {
--              //TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-       }
-       php_url_free(resource);
- 
-@@ -730,7 +719,7 @@ PHP_FUNCTION(ssh2_shell)
- 
-       SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
- 
--      stream = php_ssh2_shell_open(session, Z_RES_P(zsession)->handle, term, 
term_len, environment, width, height, type);
-+      stream = php_ssh2_shell_open(session, Z_RES_P(zsession), term, 
term_len, environment, width, height, type);
-       if (!stream) {
-               RETURN_FALSE;
-       }
-@@ -749,7 +738,7 @@ PHP_FUNCTION(ssh2_shell)
- /* {{{ php_ssh2_exec_command
-  * Make a stream from a session
-  */
--static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, int 
resource_id, char *command, char *term, int term_len, zval *environment, long 
width, long height, long type)
-+static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION *session, 
zend_resource *rsrc, char *command, char *term, int term_len, zval 
*environment, long width, long height, long type)
- {
-       LIBSSH2_CHANNEL *channel;
-       php_ssh2_channel_data *channel_data;
-@@ -819,7 +808,7 @@ static php_stream *php_ssh2_exec_command(LIBSSH2_SESSION 
*session, int resource_
-       channel_data->streamid = 0;
-       channel_data->is_blocking = 0;
-       channel_data->timeout = 0;
--      channel_data->session_rsrcid = resource_id;
-+      channel_data->session_rsrc = rsrc;
-       channel_data->refcount = NULL;
- 
-       stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 
0, "r+");
-@@ -836,7 +825,7 @@ static php_stream 
*php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
-       LIBSSH2_SESSION *session = NULL;
-       php_stream *stream;
-       zval *tmpzval, *environment = NULL;
--      int resource_id = 0;
-+      zend_resource *rsrc = NULL;
-       php_url *resource;
-       char *terminal = NULL;
-       int terminal_len = 0;
-@@ -844,14 +833,13 @@ static php_stream 
*php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
-       long height = PHP_SSH2_DEFAULT_TERM_HEIGHT;
-       long type = PHP_SSH2_DEFAULT_TERM_UNIT;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(path, "exec", context, 
&session, &resource_id, NULL, NULL);
-+      resource = php_ssh2_fopen_wraper_parse_path(path, "exec", context, 
&session, &rsrc, NULL, NULL);
-       if (!resource || !session) {
-               return NULL;
-       }
-       if (!resource->path) {
-               php_url_free(resource);
--              //TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-               return NULL;
-       }
- 
-@@ -893,10 +881,9 @@ static php_stream 
*php_ssh2_fopen_wrapper_exec(php_stream_wrapper *wrapper, cons
-               zval_ptr_dtor(copyval);
-       }
- 
--      stream = php_ssh2_exec_command(session, resource_id, 
SSH2_URL_STR(resource->path) + 1, terminal, terminal_len, environment, width, 
height, type);
-+      stream = php_ssh2_exec_command(session, rsrc, 
SSH2_URL_STR(resource->path) + 1, terminal, terminal_len, environment, width, 
height, type);
-       if (!stream) {
--              // TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-       }
-       php_url_free(resource);
- 
-@@ -963,7 +950,7 @@ PHP_FUNCTION(ssh2_exec)
- 
-       SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
- 
--      stream = php_ssh2_exec_command(session, Z_RES_P(zsession)->handle, 
command, term, term_len, environment, width, height, type);
-+      stream = php_ssh2_exec_command(session, Z_RES_P(zsession), command, 
term, term_len, environment, width, height, type);
-       if (!stream) {
-               RETURN_FALSE;
-       }
-@@ -982,7 +969,7 @@ PHP_FUNCTION(ssh2_exec)
- /* {{{ php_ssh2_scp_xfer
-  * Make a stream from a session
-  */
--static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION *session, int 
resource_id, char *filename)
-+static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION *session, zend_resource 
*rsrc, char *filename)
- {
-       LIBSSH2_CHANNEL *channel;
-       php_ssh2_channel_data *channel_data;
-@@ -1002,7 +989,7 @@ static php_stream *php_ssh2_scp_xfer(LIBSSH2_SESSION 
*session, int resource_id,
-       channel_data->streamid = 0;
-       channel_data->is_blocking = 0;
-       channel_data->timeout = 0;
--      channel_data->session_rsrcid = resource_id;
-+      channel_data->session_rsrc = rsrc;
-       channel_data->refcount = NULL;
- 
-       stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 
0, "r");
-@@ -1018,28 +1005,26 @@ static php_stream 
*php_ssh2_fopen_wrapper_scp(php_stream_wrapper *wrapper, const
- {
-       LIBSSH2_SESSION *session = NULL;
-       php_stream *stream;
--      int resource_id = 0;
-+      zend_resource *rsrc = NULL;
-       php_url *resource;
- 
-       if (strchr(mode, '+') || strchr(mode, 'a') || strchr(mode, 'w')) {
-               return NULL;
-       }
- 
--      resource = php_ssh2_fopen_wraper_parse_path(path, "scp", context, 
&session, &resource_id, NULL, NULL);
-+      resource = php_ssh2_fopen_wraper_parse_path(path, "scp", context, 
&session, &rsrc, NULL, NULL);
-       if (!resource || !session) {
-               return NULL;
-       }
-       if (!resource->path) {
-               php_url_free(resource);
--              //TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-               return NULL;
-       }
- 
--      stream = php_ssh2_scp_xfer(session, resource_id, 
SSH2_URL_STR(resource->path));
-+      stream = php_ssh2_scp_xfer(session, rsrc, SSH2_URL_STR(resource->path));
-       if (!stream) {
--              //TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-       }
-       php_url_free(resource);
- 
-@@ -1231,7 +1216,7 @@ PHP_FUNCTION(ssh2_scp_send)
- /* {{{ php_ssh2_direct_tcpip
-  * Make a stream from a session
-  */
--static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION *session, int 
resource_id, char *host, int port)
-+static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION *session, 
zend_resource *rsrc, char *host, int port)
- {
-       LIBSSH2_CHANNEL *channel;
-       php_ssh2_channel_data *channel_data;
-@@ -1251,7 +1236,7 @@ static php_stream *php_ssh2_direct_tcpip(LIBSSH2_SESSION 
*session, int resource_
-       channel_data->streamid = 0;
-       channel_data->is_blocking = 0;
-       channel_data->timeout = 0;
--      channel_data->session_rsrcid = resource_id;
-+      channel_data->session_rsrc = rsrc;
-       channel_data->refcount = NULL;
- 
-       stream = php_stream_alloc(&php_ssh2_channel_stream_ops, channel_data, 
0, "r+");
-@@ -1270,9 +1255,9 @@ static php_stream 
*php_ssh2_fopen_wrapper_tunnel(php_stream_wrapper *wrapper, co
-       php_url *resource;
-       char *host = NULL;
-       int port = 0;
--      int resource_id = 0;
-+      zend_resource *rsrc;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(path, "tunnel", context, 
&session, &resource_id, NULL, NULL);
-+      resource = php_ssh2_fopen_wraper_parse_path(path, "tunnel", context, 
&session, &rsrc, NULL, NULL);
-       if (!resource || !session) {
-               return NULL;
-       }
-@@ -1303,15 +1288,13 @@ static php_stream 
*php_ssh2_fopen_wrapper_tunnel(php_stream_wrapper *wrapper, co
-       if ((port <= 0) || (port > 65535) || !host || (strlen(host) == 0)) {
-               /* Invalid connection criteria */
-               php_url_free(resource);
--              //TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-               return NULL;
-       }
- 
--      stream = php_ssh2_direct_tcpip(session, resource_id, host, port);
-+      stream = php_ssh2_direct_tcpip(session, rsrc, host, port);
-       if (!stream) {
--              // TODO Sean-Der
--              //zend_list_delete(resource_id);
-+              zend_list_delete(rsrc);
-       }
-       php_url_free(resource);
- 
-@@ -1352,7 +1335,7 @@ PHP_FUNCTION(ssh2_tunnel)
- 
-       SSH2_FETCH_AUTHENTICATED_SESSION(session, zsession);
- 
--      stream = php_ssh2_direct_tcpip(session, Z_RES_P(zsession)->handle, 
host, port);
-+      stream = php_ssh2_direct_tcpip(session, Z_RES_P(zsession), host, port);
-       if (!stream) {
-               RETURN_FALSE;
-       }
-diff --git a/ssh2_sftp.c b/ssh2_sftp.c
-index 6332be8..256fc70 100644
---- a/ssh2_sftp.c
-+++ b/ssh2_sftp.c
-@@ -40,8 +40,7 @@ void php_ssh2_sftp_dtor(zend_resource *rsrc)
- 
-       libssh2_sftp_shutdown(data->sftp);
- 
--      // TODO Sean-Der
--      //zend_list_delete(data->session_rsrcid);
-+      zend_list_delete(data->session_rsrc);
- 
-       efree(data);
- }
-@@ -50,7 +49,7 @@ void php_ssh2_sftp_dtor(zend_resource *rsrc)
-    * SFTP File Ops *
-    ***************** */
- 
--inline unsigned long php_ssh2_parse_fopen_modes(char *openmode) {
-+unsigned long php_ssh2_parse_fopen_modes(char *openmode) {
-       unsigned long flags = 0;
- 
-       if (strchr(openmode, 'a')) {
-@@ -101,7 +100,7 @@ inline int php_ssh2_sftp_attr2ssb(php_stream_statbuf *ssb, 
LIBSSH2_SFTP_ATTRIBUT
- typedef struct _php_ssh2_sftp_handle_data {
-       LIBSSH2_SFTP_HANDLE *handle;
- 
--      long sftp_rsrcid;
-+      zend_resource *sftp_rsrc;
- } php_ssh2_sftp_handle_data;
- 
- /* {{{ php_ssh2_sftp_stream_write
-@@ -139,8 +138,7 @@ static int php_ssh2_sftp_stream_close(php_stream *stream, 
int close_handle)
-       php_ssh2_sftp_handle_data *data = 
(php_ssh2_sftp_handle_data*)stream->abstract;
- 
-       libssh2_sftp_close(data->handle);
--      //TODO Sean-Der
--      //zend_list_delete(data->sftp_rsrcid);
-+      zend_list_delete(data->sftp_rsrc);
-       efree(data);
- 
-       return 0;
-@@ -226,12 +224,12 @@ static php_stream 
*php_ssh2_sftp_stream_opener(php_stream_wrapper *wrapper, cons
-       LIBSSH2_SFTP *sftp = NULL;
-       LIBSSH2_SFTP_HANDLE *handle;
-       php_stream *stream;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
-       unsigned long flags;
-       long perms = 0644;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp) {
-               return NULL;
-       }
-@@ -242,20 +240,18 @@ static php_stream 
*php_ssh2_sftp_stream_opener(php_stream_wrapper *wrapper, cons
-       if (!handle) {
-               php_error_docref(NULL, E_WARNING, "Unable to open %s on remote 
host", filename);
-               php_url_free(resource);
--              //TODO Sean-Der
--              //zend_list_delete(sftp_rsrcid);
-+              zend_list_delete(sftp_rsrc);
-               return NULL;
-       }
- 
-       data = emalloc(sizeof(php_ssh2_sftp_handle_data));
-       data->handle = handle;
--      data->sftp_rsrcid = sftp_rsrcid;
-+      data->sftp_rsrc = sftp_rsrc;
- 
-       stream = php_stream_alloc(&php_ssh2_sftp_stream_ops, data, 0, mode);
-       if (!stream) {
-               libssh2_sftp_close(handle);
--              // TODO Sean-Der
--              //zend_list_delete(sftp_rsrcid);
-+              zend_list_delete(sftp_rsrc);
-               efree(data);
-       }
-       php_url_free(resource);
-@@ -303,8 +299,7 @@ static int php_ssh2_sftp_dirstream_close(php_stream 
*stream, int close_handle)
-       php_ssh2_sftp_handle_data *data = 
(php_ssh2_sftp_handle_data*)stream->abstract;
- 
-       libssh2_sftp_close(data->handle);
--      //TODO Sean_der
--      //zend_list_delete(data->sftp_rsrcid);
-+      zend_list_delete(data->sftp_rsrc);
-       efree(data);
- 
-       return 0;
-@@ -333,10 +328,10 @@ static php_stream 
*php_ssh2_sftp_dirstream_opener(php_stream_wrapper *wrapper, c
-       LIBSSH2_SFTP *sftp = NULL;
-       LIBSSH2_SFTP_HANDLE *handle;
-       php_stream *stream;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(filename, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp) {
-               return NULL;
-       }
-@@ -345,20 +340,18 @@ static php_stream 
*php_ssh2_sftp_dirstream_opener(php_stream_wrapper *wrapper, c
-       if (!handle) {
-               php_error_docref(NULL, E_WARNING, "Unable to open %s on remote 
host", filename);
-               php_url_free(resource);
--              //TODO Sean-Der
--              //zend_list_delete(sftp_rsrcid);
-+              zend_list_delete(sftp_rsrc);
-               return NULL;
-       }
- 
-       data = emalloc(sizeof(php_ssh2_sftp_handle_data));
-       data->handle = handle;
--      data->sftp_rsrcid = sftp_rsrcid;
-+      data->sftp_rsrc = sftp_rsrc;
- 
-       stream = php_stream_alloc(&php_ssh2_sftp_dirstream_ops, data, 0, mode);
-       if (!stream) {
-               libssh2_sftp_close(handle);
--              //TODO Sean-Der
--              //zend_list_delete(sftp_rsrcid);
-+              zend_list_delete(sftp_rsrc);
-               efree(data);
-       }
-       php_url_free(resource);
-@@ -378,10 +371,10 @@ static int php_ssh2_sftp_urlstat(php_stream_wrapper 
*wrapper, const char *url, i
-       LIBSSH2_SFTP_ATTRIBUTES attrs;
-       LIBSSH2_SESSION *session = NULL;
-       LIBSSH2_SFTP *sftp = NULL;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp || !resource->path) {
-               return -1;
-       }
-@@ -408,11 +401,11 @@ static int php_ssh2_sftp_unlink(php_stream_wrapper 
*wrapper, const char *url, in
- {
-       LIBSSH2_SESSION *session = NULL;
-       LIBSSH2_SFTP *sftp = NULL;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
-       int result;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp || !resource->path) {
-               if (resource) {
-                       php_url_free(resource);
-@@ -436,7 +429,7 @@ static int php_ssh2_sftp_rename(php_stream_wrapper 
*wrapper, const char *url_fro
- {
-       LIBSSH2_SESSION *session = NULL;
-       LIBSSH2_SFTP *sftp = NULL;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource, *resource_to;
-       int result;
- 
-@@ -453,7 +446,7 @@ static int php_ssh2_sftp_rename(php_stream_wrapper 
*wrapper, const char *url_fro
-               return 0;
-       }
- 
--      resource = php_ssh2_fopen_wraper_parse_path(url_from, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(url_from, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp || !resource->path) {
-               if (resource) {
-                       php_url_free(resource);
-@@ -479,11 +472,11 @@ static int php_ssh2_sftp_mkdir(php_stream_wrapper 
*wrapper, const char *url, int
- {
-       LIBSSH2_SESSION *session = NULL;
-       LIBSSH2_SFTP *sftp = NULL;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
-       int result;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp || !resource->path) {
-               if (resource) {
-                       php_url_free(resource);
-@@ -515,11 +508,11 @@ static int php_ssh2_sftp_rmdir(php_stream_wrapper 
*wrapper, const char *url, int
- {
-       LIBSSH2_SESSION *session = NULL;
-       LIBSSH2_SFTP *sftp = NULL;
--      int resource_id = 0, sftp_rsrcid = 0;
-+      zend_resource *rsrc = NULL, *sftp_rsrc = NULL;
-       php_url *resource;
-       int result;
- 
--      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &resource_id, &sftp, &sftp_rsrcid);
-+      resource = php_ssh2_fopen_wraper_parse_path(url, "sftp", context, 
&session, &rsrc, &sftp, &sftp_rsrc);
-       if (!resource || !session || !sftp || !resource->path) {
-               if (resource) {
-                       php_url_free(resource);
-@@ -591,7 +584,7 @@ PHP_FUNCTION(ssh2_sftp)
-       data = emalloc(sizeof(php_ssh2_sftp_data));
-       data->session = session;
-       data->sftp = sftp;
--      data->session_rsrcid = Z_RES_P(zsession)->handle;
-+      data->session_rsrc = Z_RES_P(zsession);
-       Z_ADDREF_P(zsession);
- 
-       RETURN_RES(zend_register_resource(data, le_ssh2_sftp));
--- 
-2.1.4
-

diff --git a/dev-php/pecl-ssh2/pecl-ssh2-1.1.2.ebuild 
b/dev-php/pecl-ssh2/pecl-ssh2-1.1.2.ebuild
index 7001e2010d5..a27f6970b15 100644
--- a/dev-php/pecl-ssh2/pecl-ssh2-1.1.2.ebuild
+++ b/dev-php/pecl-ssh2/pecl-ssh2-1.1.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -14,7 +14,8 @@ USE_PHP="php7-1 php7-2 php7-3"
 DESCRIPTION="PHP bindings for the libssh2 library"
 LICENSE="PHP-3.01"
 SLOT="7"
-IUSE=""
+
+SRC_URI+=" 
https://dev.gentoo.org/~juippis/distfiles/tmp/pecl-ssh2-1.1.2-fix-php7-port.patch";
 KEYWORDS="amd64 x86"
 # Upstream notes say there are errors with gcrypt backend
 DEPEND=">=net-libs/libssh2-1.2[-gcrypt]"
@@ -23,7 +24,7 @@ RDEPEND="${DEPEND}
 
 PATCHES=(
        "${FILESDIR}"/${P}-fix-php_url-fields-usage-for-php7-3.patch
-       "${FILESDIR}"/${P}-fix-php7-port.patch
+       "${DISTDIR}"/${P}-fix-php7-port.patch
 )
 
 src_prepare() {

Reply via email to