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