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.
395 lines
9.7 KiB
395 lines
9.7 KiB
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
|