From 64a8eae33da82718c52bb88626599d41458ba321 Mon Sep 17 00:00:00 2001 From: Nitesh Date: Thu, 2 Jun 2016 15:17:54 -0400 Subject: [PATCH 1/3] Remove false positives for deprecated functions `not_mysql_affected_rows()` or `namespace_mysql_affected_rows()` should not be considered a match, as they are different functions. --- classes/tests/critical.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/tests/critical.php b/classes/tests/critical.php index 95e9c2e..7db0314 100644 --- a/classes/tests/critical.php +++ b/classes/tests/critical.php @@ -112,7 +112,7 @@ public function _reservedNames($line) { * @return boolean Line matches test. */ public function _deprecatedFunctions($line) { - $regex = "#(?:mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mcrypt_generic_end|mcrypt_ecb|mcrypt_cbc|mcrypt_cfb|mcrypt_ofb|set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking)\(#i"; + $regex = "#(?:[^_[A-Z][a-z]]mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mcrypt_generic_end|mcrypt_ecb|mcrypt_cbc|mcrypt_cfb|mcrypt_ofb|set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking)\(#i"; if (preg_match($regex, $line)) { return true; } From 277bd4abda6fd9af61af346aea1fe3927090fac2 Mon Sep 17 00:00:00 2001 From: Nitesh Date: Thu, 2 Jun 2016 15:43:34 -0400 Subject: [PATCH 2/3] Remove false positives for all deprecated functions Fixed the regex and tested using testcases.php to verify that matches still work and false matches do not. --- classes/tests/critical.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/tests/critical.php b/classes/tests/critical.php index 7db0314..494f01c 100644 --- a/classes/tests/critical.php +++ b/classes/tests/critical.php @@ -112,7 +112,7 @@ public function _reservedNames($line) { * @return boolean Line matches test. */ public function _deprecatedFunctions($line) { - $regex = "#(?:[^_[A-Z][a-z]]mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mcrypt_generic_end|mcrypt_ecb|mcrypt_cbc|mcrypt_cfb|mcrypt_ofb|set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking)\(#i"; + $regex = "#(?:[^_A-Za-z]|^)(?:mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mcrypt_generic_end|mcrypt_ecb|mcrypt_cbc|mcrypt_cfb|mcrypt_ofb|set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking)\(#i"; if (preg_match($regex, $line)) { return true; } From 97189d3c9f4c64d71f6a92f9ffe36b6b5a2048c4 Mon Sep 17 00:00:00 2001 From: Nitesh Date: Thu, 2 Jun 2016 15:46:02 -0400 Subject: [PATCH 3/3] Update testcases.php Added testcase for false positive --- testcases.php | 1 + 1 file changed, 1 insertion(+) diff --git a/testcases.php b/testcases.php index ba7c478..37e647b 100644 --- a/testcases.php +++ b/testcases.php @@ -75,6 +75,7 @@ trait numeric { /*...*/ } magic_quotes_runtime(); set_socket_blocking(); mysql_affected_rows(); +not_mysql_affected_rows(); mysql_client_encoding(); mysql_close(); mysql_connect();