From 2e1ca55678d2295d2c113536eec2d92b840d1f3f Mon Sep 17 00:00:00 2001 From: Brian Evans Date: Thu, 15 Apr 2021 14:51:16 -0400 Subject: dev-php/pecl-crack: Revbump for PHP 8 support Signed-off-by: Brian Evans --- 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(+) create mode 100644 dev-php/pecl-crack/files/0.4-php8.patch create mode 100644 dev-php/pecl-crack/pecl-crack-0.4-r8.ebuild (limited to 'dev-php/pecl-crack') 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 000000000000..ce5f36f11738 --- /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 000000000000..def1519d1013 --- /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" +) -- cgit v1.2.3-65-gdbad