You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-php/pecl-crack/files/0.4-php7.patch

357 lines
8.2 KiB

--- 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