All pastes #1702061 Raw Edit

mysql safe mode for mysqli

public unlisted diff v1 · immutable
#1702061 ·published 2009-12-04 17:30 UTC
rendered paste body
--- 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;