List:Commits« Previous MessageNext Message »
From:ahristov Date:July 6 2007 11:52pm
Subject:PHP mysqlnd svn commit: r672 - in trunk: mysqlnd php4/ext/mysql php5/ext/mysql php5/ext/mysqli php6/ext/mysql php6/ext/mysqli
View as plain text  
Author: ahristov
Date: 2007-07-06 23:52:55 +0200 (Fri, 06 Jul 2007)
New Revision: 672

Modified:
   trunk/mysqlnd/mysqlnd.c
   trunk/mysqlnd/mysqlnd.h
   trunk/mysqlnd/mysqlnd_enum_n_def.h
   trunk/mysqlnd/mysqlnd_loaddata.c
   trunk/php4/ext/mysql/php_mysql.c
   trunk/php4/ext/mysql/php_mysql.h
   trunk/php5/ext/mysql/php_mysql.c
   trunk/php5/ext/mysql/php_mysql.h
   trunk/php5/ext/mysqli/mysqli.c
   trunk/php5/ext/mysqli/mysqli_libmysql.h
   trunk/php5/ext/mysqli/mysqli_nonapi.c
   trunk/php5/ext/mysqli/php_mysqli_structs.h
   trunk/php6/ext/mysql/php_mysql.c
   trunk/php6/ext/mysql/php_mysql.h
   trunk/php6/ext/mysqli/mysqli.c
   trunk/php6/ext/mysqli/mysqli_libmysql.h
   trunk/php6/ext/mysqli/mysqli_nonapi.c
   trunk/php6/ext/mysqli/php_mysqli_structs.h
Log:
Make it possible to disable load data LOCAL infile through an
INI option.


Modified: trunk/mysqlnd/mysqlnd.c
===================================================================
--- trunk/mysqlnd/mysqlnd.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/mysqlnd/mysqlnd.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -1326,6 +1326,9 @@
 												const char * const value)
 {
 	switch (option) {
+		case MYSQLND_ALLOW_LOCAL_INFILE:
+			conn->options.allow_local_infile = *(uint*) value;
+			break;
 		case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE:
 			conn->options.numeric_and_datetime_as_unicode = *(uint*) value;
 			break;

Modified: trunk/mysqlnd/mysqlnd.h
===================================================================
--- trunk/mysqlnd/mysqlnd.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/mysqlnd/mysqlnd.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -247,6 +247,8 @@
 
 	ulong		flags;
 
+	uint		allow_local_infile;
+
 	/* init commands - we need to send them to server directly after connect */
 	uint		num_commands;
 	char		**init_commands;
@@ -264,7 +266,7 @@
 	zend_bool	use_ssl;
 
 	/* maximum allowed packet size for communication */
-	ulong	max_allowed_packet;
+	ulong		max_allowed_packet;
 
 	zend_bool	numeric_and_datetime_as_unicode;
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION

Modified: trunk/mysqlnd/mysqlnd_enum_n_def.h
===================================================================
--- trunk/mysqlnd/mysqlnd_enum_n_def.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/mysqlnd/mysqlnd_enum_n_def.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -113,10 +113,11 @@
 	MYSQL_REPORT_DATA_TRUNCATION,
 	MYSQL_OPT_RECONNECT,
 	MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
-	MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200
+	MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200,
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION
-	,MYSQLND_OPT_INT_AND_YEAR_AS_INT = 201
+	MYSQLND_OPT_INT_AND_YEAR_AS_INT = 201,
 #endif
+	MYSQLND_ALLOW_LOCAL_INFILE = 202
 } enum_mysqlnd_option;
 
 

Modified: trunk/mysqlnd/mysqlnd_loaddata.c
===================================================================
--- trunk/mysqlnd/mysqlnd_loaddata.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/mysqlnd/mysqlnd_loaddata.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -245,6 +245,14 @@
 	size_t				ret;
 	MYSQLND_INFILE		infile;
 
+	if (!conn->options.allow_local_infile) {
+		php_error_docref(NULL TSRMLS_CC, E_WARNING, "LOAD DATA LOCAL INFILE forbidden");
+		/* write empty packet to server */
+		ret = mysqlnd_stream_write_w_header(conn, empty_packet, 0 TSRMLS_CC);
+		*is_warning = TRUE;
+		goto infile_error;
+	}
+
 	/* check if we have valid functions */
 	if (!conn->infile.local_infile_init || !conn->infile.local_infile_read ||
 		!conn->infile.local_infile_error || !conn->infile.local_infile_end) {

Modified: trunk/php4/ext/mysql/php_mysql.c
===================================================================
--- trunk/php4/ext/mysql/php_mysql.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php4/ext/mysql/php_mysql.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -403,6 +403,7 @@
 	STD_PHP_INI_ENTRY("mysql.default_socket",		NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_ENTRY("mysql.connect_timeout",		"60",	PHP_INI_ALL,		OnUpdateInt,		connect_timeout,
	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_BOOLEAN("mysql.trace_mode",			"0",	PHP_INI_ALL,		OnUpdateInt,		trace_mode,
		zend_mysql_globals,		mysql_globals)
+	STD_PHP_INI_BOOLEAN("mysql.allow_local_infile",	"1",	PHP_INI_SYSTEM,		OnUpdateLong,		allow_local_infile,
zend_mysql_globals,		mysql_globals)
 #ifdef HAVE_MYSQLND
 	STD_PHP_INI_ENTRY("mysql.cache_size",			"2000",	PHP_INI_SYSTEM,		OnUpdateInt,		cache_size,			zend_mysql_globals,		mysql_globals)
 #endif
@@ -422,6 +423,7 @@
 	mysql_globals->connect_error = NULL;
 	mysql_globals->connect_timeout = 0;
 	mysql_globals->trace_mode = 0;
+	mysql_globals->allow_local_infile = 1;
 	mysql_globals->result_allocated = 0;
 #ifdef HAVE_MYSQLND
 	mysql_globals->cache_size = 0;
@@ -790,6 +792,12 @@
 				efree(hashed_details);
 				MYSQL_DO_CONNECT_RETURN_FALSE();
 			}
+#if defined(HAVE_MYSQLND)
+			{
+				uint value = MySG(allow_local_infile);
+				mysqlnd_options(mysql->conn, MYSQLND_ALLOW_LOCAL_INFILE, (char *)&value);
+			}
+#endif
 
 			/* hash it up */
 			Z_TYPE(new_le) = le_plink;

Modified: trunk/php4/ext/mysql/php_mysql.h
===================================================================
--- trunk/php4/ext/mysql/php_mysql.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php4/ext/mysql/php_mysql.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -128,6 +128,7 @@
 	long connect_timeout;
 	long result_allocated;
 	long trace_mode;
+	long allow_local_infile;
 #ifdef HAVE_MYSQLND
 	MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
 	MYSQLND_QCACHE			*mysqlnd_qcache;

Modified: trunk/php5/ext/mysql/php_mysql.c
===================================================================
--- trunk/php5/ext/mysql/php_mysql.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysql/php_mysql.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -399,6 +399,7 @@
 	STD_PHP_INI_ENTRY("mysql.default_socket",		NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_ENTRY("mysql.connect_timeout",		"60",	PHP_INI_ALL,		OnUpdateLong,		connect_timeout,
	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_BOOLEAN("mysql.trace_mode",			"0",	PHP_INI_ALL,		OnUpdateLong,		trace_mode,
		zend_mysql_globals,		mysql_globals)
+	STD_PHP_INI_BOOLEAN("mysql.allow_local_infile",	"1",	PHP_INI_SYSTEM,		OnUpdateLong,		allow_local_infile,
zend_mysql_globals,		mysql_globals)
 #ifdef HAVE_MYSQLND
 	STD_PHP_INI_ENTRY("mysql.cache_size",			"2000",	PHP_INI_SYSTEM,		OnUpdateLong,		cache_size,			zend_mysql_globals,		mysql_globals)
 #endif
@@ -418,6 +419,7 @@
 	mysql_globals->connect_error = NULL;
 	mysql_globals->connect_timeout = 0;
 	mysql_globals->trace_mode = 0;
+	mysql_globals->allow_local_infile = 1;
 	mysql_globals->result_allocated = 0;
 #ifdef HAVE_MYSQLND
 	mysql_globals->cache_size = 0;
@@ -725,6 +727,12 @@
 				efree(hashed_details);
 				MYSQL_DO_CONNECT_RETURN_FALSE();
 			}
+#if defined(HAVE_MYSQLND)
+			{
+				uint value = MySG(allow_local_infile);
+				mysqlnd_options(mysql->conn, MYSQLND_ALLOW_LOCAL_INFILE, (char *)&value);
+			}
+#endif
 
 			/* hash it up */
 			Z_TYPE(new_le) = le_plink;

Modified: trunk/php5/ext/mysql/php_mysql.h
===================================================================
--- trunk/php5/ext/mysql/php_mysql.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysql/php_mysql.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -128,6 +128,7 @@
 	long connect_timeout;
 	long result_allocated;
 	long trace_mode;
+	long allow_local_infile;
 #ifdef HAVE_MYSQLND
 	MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
 	MYSQLND_QCACHE			*mysqlnd_qcache;

Modified: trunk/php5/ext/mysqli/mysqli.c
===================================================================
--- trunk/php5/ext/mysqli/mysqli.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysqli/mysqli.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -511,6 +511,7 @@
 	STD_PHP_INI_ENTRY("mysqli.default_port",			"3306",	PHP_INI_ALL,		OnUpdateLong,		default_port,		zend_mysqli_globals,		mysqli_globals)
 	STD_PHP_INI_ENTRY("mysqli.default_socket",			NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysqli_globals,		mysqli_globals)
 	STD_PHP_INI_BOOLEAN("mysqli.reconnect",				"0",	PHP_INI_SYSTEM,		OnUpdateLong,		reconnect,			zend_mysqli_globals,		mysqli_globals)
+	STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile",	"1",	PHP_INI_SYSTEM,		OnUpdateLong,		allow_local_infile,	zend_mysqli_globals,		mysqli_globals)
 #ifdef HAVE_MYSQLND
 	STD_PHP_INI_ENTRY("mysqli.cache_size",				"2000",	PHP_INI_SYSTEM,		OnUpdateLong,		cache_size,			zend_mysqli_globals,		mysqli_globals)
 #endif
@@ -532,6 +533,7 @@
 	mysqli_globals->reconnect = 0;
 	mysqli_globals->report_mode = 0;
 	mysqli_globals->report_ht = 0;
+	mysqli_globals->allow_local_infile = 1;
 #ifdef HAVE_EMBEDDED_MYSQLI
 	mysqli_globals->embedded = 1;
 #else

Modified: trunk/php5/ext/mysqli/mysqli_libmysql.h
===================================================================
--- trunk/php5/ext/mysqli/mysqli_libmysql.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysqli/mysqli_libmysql.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -25,6 +25,7 @@
 #define MYSQLI_CLOSE_DISCONNECTED
 #define MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE	200
 #define MYSQLND_OPT_INT_AND_YEAR_AS_INT				201
+#define MYSQLND_ALLOW_LOCAL_INFILE					202
 
 #define mysqli_result_is_unbuffered(r)		((r)->handle &&
(r)->handle->status == MYSQL_STATUS_USE_RESULT)
 #define mysqli_server_status(c)				(c)->server_status

Modified: trunk/php5/ext/mysqli/mysqli_nonapi.c
===================================================================
--- trunk/php5/ext/mysqli/mysqli_nonapi.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysqli/mysqli_nonapi.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -168,6 +168,11 @@
 
 	/* set our own local_infile handler */
 	php_set_local_infile_handler_default(mysql);
+#else
+	{
+		uint value = MyG(allow_local_infile);
+		mysqlnd_options(mysql->mysql, MYSQLND_ALLOW_LOCAL_INFILE, &value);
+	}
 #endif
 
 end:

Modified: trunk/php5/ext/mysqli/php_mysqli_structs.h
===================================================================
--- trunk/php5/ext/mysqli/php_mysqli_structs.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php5/ext/mysqli/php_mysqli_structs.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -346,6 +346,7 @@
 	char			*default_socket;
 	char			*default_pw;
 	int				reconnect;
+	int 			allow_local_infile;
 	int				strict;
 	long			error_no;
 	char			*error_msg;

Modified: trunk/php6/ext/mysql/php_mysql.c
===================================================================
--- trunk/php6/ext/mysql/php_mysql.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysql/php_mysql.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -397,6 +397,7 @@
 	STD_PHP_INI_ENTRY("mysql.default_socket",		NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_ENTRY("mysql.connect_timeout",		"60",	PHP_INI_ALL,		OnUpdateLong,		connect_timeout,
	zend_mysql_globals,		mysql_globals)
 	STD_PHP_INI_BOOLEAN("mysql.trace_mode",			"0",	PHP_INI_ALL,		OnUpdateLong,		trace_mode,
		zend_mysql_globals,		mysql_globals)
+	STD_PHP_INI_BOOLEAN("mysql.allow_local_infile",	"1",	PHP_INI_SYSTEM,		OnUpdateLong,		allow_local_infile,
zend_mysql_globals,		mysql_globals)
 #ifdef HAVE_MYSQLND
 	STD_PHP_INI_ENTRY("mysql.cache_size",			"2000",	PHP_INI_SYSTEM,		OnUpdateLong,		cache_size,			zend_mysql_globals,		mysql_globals)
 #endif
@@ -416,6 +417,7 @@
 	mysql_globals->connect_error = NULL;
 	mysql_globals->connect_timeout = 0;
 	mysql_globals->trace_mode = 0;
+	mysql_globals->allow_local_infile = 1;
 	mysql_globals->result_allocated = 0;
 #ifdef HAVE_MYSQLND
 	mysql_globals->cache_size = 0;
@@ -721,6 +723,12 @@
 				efree(hashed_details);
 				MYSQL_DO_CONNECT_RETURN_FALSE();
 			}
+#if defined(HAVE_MYSQLND)
+			{
+				uint value = MySG(allow_local_infile);
+				mysqlnd_options(mysql->conn, MYSQLND_ALLOW_LOCAL_INFILE, (char *)&value);
+			}
+#endif
 
 			if (UG(unicode)) {
 #ifdef MYSQL_HAS_SET_CHARSET

Modified: trunk/php6/ext/mysql/php_mysql.h
===================================================================
--- trunk/php6/ext/mysql/php_mysql.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysql/php_mysql.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -129,6 +129,7 @@
 	long connect_timeout;
 	long result_allocated;
 	long trace_mode;
+	long allow_local_infile;
 #ifdef HAVE_MYSQLND
 	MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
 	MYSQLND_QCACHE			*mysqlnd_qcache;

Modified: trunk/php6/ext/mysqli/mysqli.c
===================================================================
--- trunk/php6/ext/mysqli/mysqli.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysqli/mysqli.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -514,6 +514,7 @@
 	STD_PHP_INI_ENTRY("mysqli.default_port",			"3306",	PHP_INI_ALL,		OnUpdateLong,		default_port,		zend_mysqli_globals,		mysqli_globals)
 	STD_PHP_INI_ENTRY("mysqli.default_socket",			NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysqli_globals,		mysqli_globals)
 	STD_PHP_INI_BOOLEAN("mysqli.reconnect",				"0",	PHP_INI_SYSTEM,		OnUpdateLong,		reconnect,			zend_mysqli_globals,		mysqli_globals)
+	STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile",	"1",	PHP_INI_SYSTEM,		OnUpdateLong,		allow_local_infile,	zend_mysqli_globals,		mysqli_globals)
 #ifdef HAVE_MYSQLND
 	STD_PHP_INI_ENTRY("mysqli.cache_size",				"2000",	PHP_INI_SYSTEM,		OnUpdateLong,		cache_size,			zend_mysqli_globals,		mysqli_globals)
 #endif
@@ -533,6 +534,7 @@
 	mysqli_globals->default_pw = NULL;
 	mysqli_globals->default_socket = NULL;
 	mysqli_globals->reconnect = 0;
+	mysqli_globals->allow_local_infile = 1;
 	mysqli_globals->report_mode = 0;
 	mysqli_globals->report_ht = 0;
 #ifdef HAVE_EMBEDDED_MYSQLI

Modified: trunk/php6/ext/mysqli/mysqli_libmysql.h
===================================================================
--- trunk/php6/ext/mysqli/mysqli_libmysql.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysqli/mysqli_libmysql.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -25,6 +25,7 @@
 #define MYSQLI_CLOSE_DISCONNECTED
 #define MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE	200
 #define MYSQLND_OPT_INT_AND_YEAR_AS_INT				201
+#define MYSQLND_ALLOW_LOCAL_INFILE					202
 
 #define mysqli_result_is_unbuffered(r)		((r)->handle &&
(r)->handle->status == MYSQL_STATUS_USE_RESULT)
 #define mysqli_server_status(c)				(c)->server_status

Modified: trunk/php6/ext/mysqli/mysqli_nonapi.c
===================================================================
--- trunk/php6/ext/mysqli/mysqli_nonapi.c	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysqli/mysqli_nonapi.c	2007-07-06 21:52:55 UTC (rev 672)
@@ -183,6 +183,11 @@
 
 	/* set our own local_infile handler */
 	php_set_local_infile_handler_default(mysql);
+#else
+	{
+		uint value = MyG(allow_local_infile);
+		mysqlnd_options(mysql->mysql, MYSQLND_ALLOW_LOCAL_INFILE, (char *)&value);
+	}
 #endif
 
 end:

Modified: trunk/php6/ext/mysqli/php_mysqli_structs.h
===================================================================
--- trunk/php6/ext/mysqli/php_mysqli_structs.h	2007-07-06 20:46:01 UTC (rev 671)
+++ trunk/php6/ext/mysqli/php_mysqli_structs.h	2007-07-06 21:52:55 UTC (rev 672)
@@ -358,6 +358,7 @@
 	char			*default_socket;
 	char			*default_pw;
 	int				reconnect;
+	int				allow_local_infile;
 	int				strict;
 	long			error_no;
 	char			*error_msg;

Thread
PHP mysqlnd svn commit: r672 - in trunk: mysqlnd php4/ext/mysql php5/ext/mysql php5/ext/mysqli php6/ext/mysql php6/ext/mysqliahristov7 Jul