--- php5.3-200911131930.old/ext/mysqli/mysqli_nonapi.c 2009-11-11 20:34:37.000000000 -0500 +++ php5.3-200911131930.new/ext/mysqli/mysqli_nonapi.c 2009-11-19 14:33:40.432147198 -0500 @@ -127,18 +127,28 @@ void mysqli_common_connect(INTERNAL_FUNC if (!socket_len || !socket) { socket = MyG(default_socket); } - if (!port){ - port = MyG(default_port); - } - if (!passwd) { - passwd = MyG(default_pw); - passwd_len = strlen(SAFE_STR(passwd)); - } - if (!username){ - username = MyG(default_user); - } - if (!hostname || !hostname_len) { - hostname = MyG(default_host); + + if (PG(sql_safe_mode)) { + if (ZEND_NUM_ARGS()>0) { + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "SQL safe mode in effect - ignoring host/user/password information"); + } + hostname = passwd = NULL; + username = php_get_current_user(); + flags = CLIENT_INTERACTIVE; + } else { + if (!port){ + port = MyG(default_port); + } + if (!passwd) { + passwd = MyG(default_pw); + passwd_len = strlen(SAFE_STR(passwd)); + } + if (!username){ + username = MyG(default_user); + } + if (!hostname || !hostname_len) { + hostname = MyG(default_host); + } } if (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)) { @@ -147,10 +157,13 @@ void mysqli_common_connect(INTERNAL_FUNC php_error_docref(NULL TSRMLS_CC, E_WARNING, "Persistent connections are disabled. Downgrading to normal"); } else { mysql->persistent = persistent = TRUE; - - hash_len = spprintf(&hash_key, 0, "mysqli_%s_%s%ld%s%s%s", SAFE_STR(hostname), SAFE_STR(socket), - port, SAFE_STR(username), SAFE_STR(dbname), - SAFE_STR(passwd)); + if (PG(sql_safe_mode)) { + hash_len = spprintf(&hash_key, 0, "mysql__%s_", username); + } else { + hash_len = spprintf(&hash_key, 0, "mysqli_%s_%s%ld%s%s%s", SAFE_STR(hostname), SAFE_STR(socket), + port, SAFE_STR(username), SAFE_STR(dbname), + SAFE_STR(passwd)); + } mysql->hash_key = hash_key;