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/mysqli | ahristov | 7 Jul |