commit:     f2f17d71f00dc1c922c208335b17f1d39abe7518
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  3 19:28:43 2017 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Fri Mar  3 19:29:25 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f2f17d71

dev-php/pecl-crack: Revbump with patch for PHP 7

Package-Manager: Portage-2.3.4, Repoman-2.3.2

 dev-php/pecl-crack/files/0.4-php7.patch     | 356 ++++++++++++++++++++++++++++
 dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild |  26 ++
 2 files changed, 382 insertions(+)

diff --git a/dev-php/pecl-crack/files/0.4-php7.patch 
b/dev-php/pecl-crack/files/0.4-php7.patch
new file mode 100644
index 00000000000..5a00c912181
--- /dev/null
+++ b/dev-php/pecl-crack/files/0.4-php7.patch
@@ -0,0 +1,356 @@
+--- a/crack.c  2016-12-19 16:04:09.244782234 -0500
++++ b/crack.c  2016-12-20 09:20:11.903140742 -0500
+@@ -36,13 +36,31 @@
+ /* True global resources - no need for thread safety here */
+ static int le_crack;
+ 
++ZEND_BEGIN_ARG_INFO_EX(crack_opendict_args, 0, ZEND_RETURN_VALUE, 1)
++      ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_closedict_args, 0, ZEND_RETURN_VALUE, 0)
++      ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_check_args, 0, ZEND_RETURN_VALUE, 1)
++      ZEND_ARG_INFO(0, password)
++      ZEND_ARG_INFO(0, username)
++      ZEND_ARG_INFO(0, gecos)
++      ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_getlastmessage_args, 0, ZEND_RETURN_VALUE, 0)
++ZEND_END_ARG_INFO()
++
+ /* {{{ crack_functions[]
+  */
+ zend_function_entry crack_functions[] = {
+-      PHP_FE(crack_opendict,                  NULL)
+-      PHP_FE(crack_closedict,                 NULL)
+-      PHP_FE(crack_check,                             NULL)
+-      PHP_FE(crack_getlastmessage,    NULL)
++      ZEND_FE(crack_opendict,                 crack_opendict_args)
++      ZEND_FE(crack_closedict,                        crack_closedict_args)
++      ZEND_FE(crack_check,                            crack_check_args)
++      ZEND_FE(crack_getlastmessage,   crack_getlastmessage_args)
+       {NULL, NULL, NULL}
+ };
+ /* }}} */
+@@ -55,7 +73,7 @@
+ #endif
+       "crack",
+       crack_functions,
+-      PHP_MINIT(crack), 
++      PHP_MINIT(crack),
+       PHP_MSHUTDOWN(crack),
+       PHP_RINIT(crack),
+       PHP_RSHUTDOWN(crack),
+@@ -84,7 +102,11 @@
+ static void php_crack_init_globals(zend_crack_globals *crack_globals)
+ {
+       crack_globals->last_message = NULL;
++#if PHP_VERSION_ID >= 70000
++      crack_globals->default_dict = NULL;
++#else
+       crack_globals->default_dict = -1;
++#endif
+ }
+ /* }}} */
+ 
+@@ -95,7 +117,7 @@
+       char *filename;
+       int filename_len;
+       int result = SUCCESS;
+-      
++
+ #if PHP_VERSION_ID < 50400
+       if (PG(safe_mode)) {
+               filename_len = strlen(path) + 10;
+@@ -103,7 +125,7 @@
+               if (NULL == filename) {
+                       return FAILURE;
+               }
+-        
++
+               memset(filename, '\0', filename_len);
+               strcpy(filename, path);
+               strcat(filename, ".pwd");
+@@ -111,7 +133,7 @@
+                       efree(filename);
+                       return FAILURE;
+               }
+-              
++
+               memset(filename, '\0', filename_len);
+               strcpy(filename, path);
+               strcat(filename, ".pwi");
+@@ -119,7 +141,7 @@
+                       efree(filename);
+                       return FAILURE;
+               }
+-              
++
+               memset(filename, '\0', filename_len);
+               strcpy(filename, path);
+               strcat(filename, ".hwm");
+@@ -129,39 +151,64 @@
+               }
+       }
+ #endif
+-      
++
+       if (php_check_open_basedir(path TSRMLS_CC)) {
+               return FAILURE;
+       }
+-      
++
+       return SUCCESS;
+ }
+ /* }}} */
+ 
+ /* {{{ php_crack_set_default_dict
+  */
++#if PHP_VERSION_ID >= 70000
++static void php_crack_set_default_dict(zend_resource *id)
++{
++      if (CRACKG(default_dict) != NULL) {
++              zend_list_close(CRACKG(default_dict));
++      }
++
++      CRACKG(default_dict) = id;
++      id->gc.refcount++;
++}
++#else
+ static void php_crack_set_default_dict(int id TSRMLS_DC)
+ {
+       if (CRACKG(default_dict) != -1) {
+               zend_list_delete(CRACKG(default_dict));
+       }
+-      
++
+       CRACKG(default_dict) = id;
+       zend_list_addref(id);
+ }
++#endif
+ /* }}} */
+ 
+ /* {{{ php_crack_get_default_dict
+  */
++#if PHP_VERSION_ID >= 70000
++static zend_resource * 
php_crack_get_default_dict(INTERNAL_FUNCTION_PARAMETERS)
++#else
+ static int php_crack_get_default_dict(INTERNAL_FUNCTION_PARAMETERS)
++#endif
+ {
++#if PHP_VERSION_ID >= 70000
++      if ((NULL == CRACKG(default_dict)) && (NULL != 
CRACKG(default_dictionary))) {
++#else
+       if ((-1 == CRACKG(default_dict)) && (NULL != 
CRACKG(default_dictionary))) {
++#endif
+               CRACKLIB_PWDICT *pwdict;
+               printf("trying to open: %s\n", CRACKG(default_dictionary));
+               pwdict = cracklib_pw_open(CRACKG(default_dictionary), "r");
+               if (NULL != pwdict) {
++#if PHP_VERSION_ID >= 70000
++                      ZVAL_RES(return_value, zend_register_resource(pwdict, 
le_crack));
++                      php_crack_set_default_dict(Z_RES_P(return_value));
++#else
+                       ZEND_REGISTER_RESOURCE(return_value, pwdict, le_crack);
+                       php_crack_set_default_dict(Z_LVAL_P(return_value) 
TSRMLS_CC);
++#endif
+               }
+       }
+       
+@@ -171,7 +218,11 @@
+ 
+ /* {{{ php_crack_module_dtor
+  */
++#if PHP_VERSION_ID >= 70000
++static void php_crack_module_dtor(zend_resource *rsrc)
++#else
+ static void php_crack_module_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
++#endif
+ {
+       CRACKLIB_PWDICT *pwdict = (CRACKLIB_PWDICT *) rsrc->ptr;
+       
+@@ -191,7 +242,9 @@
+       
+       REGISTER_INI_ENTRIES();
+       le_crack = zend_register_list_destructors_ex(php_crack_module_dtor, 
NULL, "crack dictionary", module_number);
++#if PHP_VERSION_ID < 70000
+       Z_TYPE(crack_module_entry) = type;
++#endif
+       
+       return SUCCESS;
+ }
+@@ -210,7 +263,11 @@
+ PHP_RINIT_FUNCTION(crack)
+ {
+       CRACKG(last_message) = NULL;
++#if PHP_VERSION_ID >= 70000
++      CRACKG(default_dict) = NULL;
++#else
+       CRACKG(default_dict) = -1;
++#endif
+       
+       return SUCCESS;
+ }
+@@ -245,7 +302,7 @@
+ PHP_FUNCTION(crack_opendict)
+ {
+       char *path;
+-      int path_len;
++      size_t path_len;
+       CRACKLIB_PWDICT *pwdict;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, 
&path_len) == FAILURE) {
+@@ -265,9 +322,14 @@
+ #endif
+               RETURN_FALSE;
+       }
+-      
++
++#if PHP_VERSION_ID >= 70000
++      RETURN_RES(zend_register_resource(pwdict, le_crack));
++      php_crack_set_default_dict(Z_RES_P(return_value));
++#else
+       ZEND_REGISTER_RESOURCE(return_value, pwdict, le_crack);
+       php_crack_set_default_dict(Z_LVAL_P(return_value) TSRMLS_CC);
++#endif
+ }
+ /* }}} */
+ 
+@@ -276,7 +338,11 @@
+ PHP_FUNCTION(crack_closedict)
+ {
+       zval *dictionary = NULL;
++#if PHP_VERSION_ID >= 70000
++      zend_resource *id;
++#else
+       int id = -1;
++#endif
+       CRACKLIB_PWDICT *pwdict;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", 
&dictionary)) {
+@@ -285,7 +351,11 @@
+       
+       if (NULL == dictionary) {
+               id = 
php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
++#if PHP_VERSION_ID >= 70000
++              if (id == NULL) {
++#else
+               if (id == -1) {
++#endif
+ #if ZEND_MODULE_API_NO >= 20021010
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not 
open default crack dicionary"); 
+ #else
+@@ -294,8 +364,21 @@
+                       RETURN_FALSE;
+               }
+       }
++#if PHP_VERSION_ID >= 70000
++      if((pwdict = (CRACKLIB_PWDICT 
*)zend_fetch_resource(Z_RES_P(dictionary), "crack dictionary", le_crack)) == 
NULL)
++      {
++              RETURN_FALSE;
++      }
++      if (NULL == dictionary) {
++              zend_list_close(CRACKG(default_dict));
++              CRACKG(default_dict) = NULL;
++      }
++      else {
++              zend_list_close(Z_RES_P(dictionary));
++      }
++#else
+       ZEND_FETCH_RESOURCE(pwdict, CRACKLIB_PWDICT *, &dictionary, id, "crack 
dictionary", le_crack);
+-      
++
+       if (NULL == dictionary) {
+               zend_list_delete(CRACKG(default_dict));
+               CRACKG(default_dict) = -1;
+@@ -303,7 +386,7 @@
+       else {
+               zend_list_delete(Z_RESVAL_P(dictionary));
+       }
+-      
++#endif
+       RETURN_TRUE;
+ }
+ /* }}} */
+@@ -314,14 +397,18 @@
+ {
+       zval *dictionary = NULL;
+       char *password = NULL;
+-      int password_len;
++      size_t password_len;
+       char *username = NULL;
+-      int username_len;
++      size_t username_len;
+       char *gecos = NULL;
+-      int gecos_len;
++      size_t gecos_len;
+       char *message;
+       CRACKLIB_PWDICT *pwdict;
++#if PHP_VERSION_ID >= 70000
++      zend_resource *crack_res;
++#else
+       int id = -1;
++#endif
+       
+       if (NULL != CRACKG(last_message)) {
+               efree(CRACKG(last_message));
+@@ -335,6 +422,21 @@
+       }
+       
+       if (NULL == dictionary) {
++#if PHP_VERSION_ID >= 70000
++              crack_res = 
php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
++              if (crack_res == NULL || crack_res->ptr == NULL) {
++                      php_error(E_WARNING, "Could not open default crack 
dicionary");
++                      RETURN_FALSE;
++              }
++
++      }
++      else {
++              if((pwdict = (CRACKLIB_PWDICT 
*)zend_fetch_resource(Z_RES_P(dictionary), "crack dictionary", le_crack)) == 
NULL) {
++                      php_error(E_WARNING, "Could not open crack dicionary 
resource");
++                      RETURN_FALSE;
++              }
++      }
++#else
+               id = 
php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+               if (id == -1) {
+ #if ZEND_MODULE_API_NO >= 20021010
+@@ -346,6 +448,7 @@
+               }
+       }
+       ZEND_FETCH_RESOURCE(pwdict, CRACKLIB_PWDICT *, &dictionary, id, "crack 
dictionary", le_crack);
++#endif
+       
+       message = cracklib_fascist_look_ex(pwdict, password, username, gecos);
+       
+@@ -377,7 +480,11 @@
+               RETURN_FALSE;
+       }
+       
++#if PHP_VERSION_ID >= 70000
++      RETURN_STRING(CRACKG(last_message));
++#else
+       RETURN_STRING(CRACKG(last_message), 1);
++#endif
+ }
+ /* }}} */
+ 
+--- a/php_crack.h      2005-09-21 05:00:06.000000000 -0400
++++ b/php_crack.h      2016-12-19 16:51:22.449321851 -0500
+@@ -52,7 +52,11 @@
+ ZEND_BEGIN_MODULE_GLOBALS(crack)
+     char *default_dictionary;
+       char *last_message;
++#if PHP_VERSION_ID >= 70000
++      zend_resource *default_dict;
++#else
+       int default_dict;
++#endif
+ ZEND_END_MODULE_GLOBALS(crack)
+ 
+ #ifdef ZTS

diff --git a/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild 
b/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild
new file mode 100644
index 00000000000..f7a9d30a87f
--- /dev/null
+++ b/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PHP_EXT_NAME="crack"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_EXTRA_ECONF=""
+DOCS=( EXPERIMENTAL )
+
+USE_PHP="php5-6 php7-0 php7-1"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+
+DESCRIPTION="PHP interface to the cracklib libraries"
+LICENSE="PHP-3 CRACKLIB"
+SLOT="0"
+IUSE=""
+# Patch for http://pecl.php.net/bugs/bug.php?id=5765
+PATCHES=( "${FILESDIR}/fix-php-5-4-support.patch"
+"${FILESDIR}/fix-pecl-bug-5765.patch"
+"${FILESDIR}/${PV}-php7.patch"
+)

Reply via email to