commit:     2e1ca55678d2295d2c113536eec2d92b840d1f3f
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 15 18:51:16 2021 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Thu Apr 15 18:51:16 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2e1ca556

dev-php/pecl-crack: Revbump for PHP 8 support

Signed-off-by: Brian Evans <grknight <AT> gentoo.org>

 dev-php/pecl-crack/files/0.4-php8.patch     | 394 ++++++++++++++++++++++++++++
 dev-php/pecl-crack/pecl-crack-0.4-r8.ebuild |  29 ++
 2 files changed, 423 insertions(+)

diff --git a/dev-php/pecl-crack/files/0.4-php8.patch 
b/dev-php/pecl-crack/files/0.4-php8.patch
new file mode 100644
index 00000000000..ce5f36f1173
--- /dev/null
+++ b/dev-php/pecl-crack/files/0.4-php8.patch
@@ -0,0 +1,394 @@
+diff -aurN a/crack.c b/crack.c
+--- a/crack.c  2021-04-15 13:57:12.174874906 -0400
++++ b/crack.c  2021-04-15 14:10:21.203314001 -0400
+@@ -68,9 +68,7 @@
+ /* {{{ crack_module_entry
+  */
+ zend_module_entry crack_module_entry = {
+-#if ZEND_MODULE_API_NO >= 20010901
+     STANDARD_MODULE_HEADER,
+-#endif
+       "crack",
+       crack_functions,
+       PHP_MINIT(crack),
+@@ -78,9 +76,7 @@
+       PHP_RINIT(crack),
+       PHP_RSHUTDOWN(crack),
+       PHP_MINFO(crack),
+-#if ZEND_MODULE_API_NO >= 20010901
+-      "0.3",
+-#endif
++      "0.4",
+       STANDARD_MODULE_PROPERTIES,
+ };
+ /* }}} */
+@@ -102,57 +98,19 @@
+ 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
+ }
+ /* }}} */
+ 
+ /* {{{ php_crack_checkpath
+  */
+-static int php_crack_checkpath(char* path TSRMLS_DC)
++static int php_crack_checkpath(char* path)
+ {
+       char *filename;
+       int filename_len;
+       int result = SUCCESS;
+ 
+-#if PHP_VERSION_ID < 50400
+-      if (PG(safe_mode)) {
+-              filename_len = strlen(path) + 10;
+-              filename = (char *) emalloc(filename_len);
+-              if (NULL == filename) {
+-                      return FAILURE;
+-              }
+-
+-              memset(filename, '\0', filename_len);
+-              strcpy(filename, path);
+-              strcat(filename, ".pwd");
+-              if (!php_checkuid(filename, "r", CHECKUID_CHECK_FILE_AND_DIR)) {
+-                      efree(filename);
+-                      return FAILURE;
+-              }
+-
+-              memset(filename, '\0', filename_len);
+-              strcpy(filename, path);
+-              strcat(filename, ".pwi");
+-              if (!php_checkuid(filename, "r", CHECKUID_CHECK_FILE_AND_DIR)) {
+-                      efree(filename);
+-                      return FAILURE;
+-              }
+-
+-              memset(filename, '\0', filename_len);
+-              strcpy(filename, path);
+-              strcat(filename, ".hwm");
+-              if (!php_checkuid(filename, "r", CHECKUID_CHECK_FILE_AND_DIR)) {
+-                      efree(filename);
+-                      return FAILURE;
+-              }
+-      }
+-#endif
+-
+-      if (php_check_open_basedir(path TSRMLS_CC)) {
++      if (php_check_open_basedir(path)) {
+               return FAILURE;
+       }
+ 
+@@ -162,7 +120,6 @@
+ 
+ /* {{{ 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) {
+@@ -172,60 +129,32 @@
+       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
+               }
+       }
+-      
++
+       return CRACKG(default_dict);
+ }
+ /* }}} */
+ 
+ /* {{{ 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;
+-      
++
+       if (pwdict != NULL) {
+               cracklib_pw_close(pwdict);
+       }
+@@ -239,13 +168,10 @@
+ #ifdef ZTS
+       ZEND_INIT_MODULE_GLOBALS(crack, php_crack_init_globals, NULL);
+ #endif
+-      
++
+       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;
+ }
+ 
+@@ -263,12 +189,8 @@
+ 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;
+ }
+ /* }}} */
+@@ -280,7 +202,7 @@
+       if (NULL != CRACKG(last_message)) {
+               efree(CRACKG(last_message));
+       }
+-      
++
+       return SUCCESS;
+ }
+ /* }}} */
+@@ -292,7 +214,7 @@
+       php_info_print_table_start();
+       php_info_print_table_header(2, "crack support", "enabled");
+       php_info_print_table_end();
+-      
++
+       DISPLAY_INI_ENTRIES();
+ }
+ /* }}} */
+@@ -304,32 +226,23 @@
+       char *path;
+       size_t path_len;
+       CRACKLIB_PWDICT *pwdict;
+-      
+-      if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, 
&path_len) == FAILURE) {
++
++      if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &path, &path_len) == 
FAILURE) {
+               RETURN_FALSE;
+       }
+-      
+-      if (php_crack_checkpath(path TSRMLS_CC) == FAILURE) {
++
++      if (php_crack_checkpath(path) == FAILURE) {
+               RETURN_FALSE;
+       }
+-      
++
+       pwdict = cracklib_pw_open(path, "r");
+       if (NULL == pwdict) {
+-#if ZEND_MODULE_API_NO >= 20021010
+-              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not open 
crack dictionary: %s", path);
+-#else
+-              php_error(E_WARNING, "Could not open crack dictionary: %s", 
path);
+-#endif
++              php_error_docref(NULL, E_WARNING, "Could not open crack 
dictionary: %s", path);
+               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
+ }
+ /* }}} */
+ 
+@@ -338,33 +251,20 @@
+ 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)) {
++
++      if (zend_parse_parameters(ZEND_NUM_ARGS(), "|r", &dictionary)) {
+               RETURN_FALSE;
+       }
+-      
++
+       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
+-                      php_error(E_WARNING, "Could not open default crack 
dicionary"); 
+-#endif
++                      php_error_docref(NULL, E_WARNING, "Could not open 
default crack dicionary"); 
+                       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;
+@@ -376,17 +276,6 @@
+       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;
+-      }
+-      else {
+-              zend_list_delete(Z_RESVAL_P(dictionary));
+-      }
+-#endif
+       RETURN_TRUE;
+ }
+ /* }}} */
+@@ -404,25 +293,20 @@
+       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));
+               CRACKG(last_message) = NULL;
+       }
+-      
+-      if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() 
TSRMLS_CC, "rs", &dictionary, &password, &password_len) == FAILURE) {
+-              if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ssr", 
&password, &password_len, &username, &username_len, &gecos, &gecos_len, 
&dictionary) == FAILURE) {
++
++      if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), 
"rs", &dictionary, &password, &password_len) == FAILURE) {
++              if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|ssr", &password, 
&password_len, &username, &username_len, &gecos, &gecos_len, &dictionary) == 
FAILURE) {
+                       RETURN_FALSE;
+               }
+       }
+-      
++
+       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");
+@@ -436,22 +320,9 @@
+                       RETURN_FALSE;
+               }
+       }
+-#else
+-              id = 
php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+-              if (id == -1) {
+-#if ZEND_MODULE_API_NO >= 20021010
+-                      php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not 
open default crack dicionary"); 
+-#else
+-                      php_error(E_WARNING, "Could not open default crack 
dicionary"); 
+-#endif
+-                      RETURN_FALSE;
+-              }
+-      }
+-      ZEND_FETCH_RESOURCE(pwdict, CRACKLIB_PWDICT *, &dictionary, id, "crack 
dictionary", le_crack);
+-#endif
+-      
++
+       message = cracklib_fascist_look_ex(pwdict, password, username, gecos);
+-      
++
+       if (NULL == message) {
+               CRACKG(last_message) = estrdup("strong password");
+               RETURN_TRUE;
+@@ -470,21 +341,13 @@
+       if (ZEND_NUM_ARGS() != 0) {
+               WRONG_PARAM_COUNT;
+       }
+-      
++
+       if (NULL == CRACKG(last_message)) {
+-#if ZEND_MODULE_API_NO >= 20021010
+-              php_error_docref(NULL TSRMLS_CC, E_WARNING, "No obscure checks 
in this session");
+-#else
+-              php_error(E_WARNING, "No obscure checks in this session");
+-#endif
++              php_error_docref(NULL, E_WARNING, "No obscure checks in this 
session");
+               RETURN_FALSE;
+       }
+-      
+-#if PHP_VERSION_ID >= 70000
++
+       RETURN_STRING(CRACKG(last_message));
+-#else
+-      RETURN_STRING(CRACKG(last_message), 1);
+-#endif
+ }
+ /* }}} */
+ 
+diff -aurN a/php_crack.h b/php_crack.h
+--- a/php_crack.h      2021-04-15 13:57:12.174874906 -0400
++++ b/php_crack.h      2021-04-15 14:10:28.853298881 -0400
+@@ -52,11 +52,7 @@
+ 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-r8.ebuild 
b/dev-php/pecl-crack/pecl-crack-0.4-r8.ebuild
new file mode 100644
index 00000000000..def1519d101
--- /dev/null
+++ b/dev-php/pecl-crack/pecl-crack-0.4-r8.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+PHP_EXT_NAME="crack"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_EXTRA_ECONF=""
+DOCS=( EXPERIMENTAL )
+
+USE_PHP="php7-3 php7-4 php8-0"
+
+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"
+       "${FILESDIR}/0.4-php8.patch"
+)

Reply via email to