summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <monty@tik.mysql.fi>2002-02-13 21:53:26 +0200
committerunknown <monty@tik.mysql.fi>2002-02-13 21:53:26 +0200
commit33d2d76549f8ccf037f733c61e2b9c17500fe738 (patch)
treed9a4ab04b8347c3969351b9c33b0c3f55c2f0145 /client
parent501650c5b16a4c7cf7b673b19f9a2ae9c319e24f (diff)
downloadmariadb-git-33d2d76549f8ccf037f733c61e2b9c17500fe738.tar.gz
Made LOAD DATA LOCAL INFILE more secure
Docs/manual.texi: Changelog sql/sql_yacc.yy: optimization BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'client')
-rw-r--r--client/client_priv.h2
-rw-r--r--client/mysql.cc13
2 files changed, 11 insertions, 4 deletions
diff --git a/client/client_priv.h b/client/client_priv.h
index 261367f7176..56eaf311070 100644
--- a/client/client_priv.h
+++ b/client/client_priv.h
@@ -30,4 +30,4 @@ enum options { OPT_CHARSETS_DIR=256, OPT_DEFAULT_CHARSET,
OPT_LOW_PRIORITY, OPT_AUTO_REPAIR, OPT_COMPRESS,
OPT_DROP, OPT_LOCKS, OPT_KEYWORDS, OPT_DELAYED, OPT_OPTIMIZE,
OPT_FTB, OPT_LTB, OPT_ENC, OPT_O_ENC, OPT_ESC, OPT_TABLES,
- OPT_MASTER_DATA, OPT_AUTOCOMMIT};
+ OPT_MASTER_DATA, OPT_AUTOCOMMIT, OPT_LOCAL_INFILE};
diff --git a/client/mysql.cc b/client/mysql.cc
index 5ae8df39863..cfe6d823cac 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -34,7 +34,7 @@
#include "my_readline.h"
#include <signal.h>
-const char *VER="11.15";
+const char *VER="11.16";
/* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH 1024
@@ -113,10 +113,10 @@ static MYSQL mysql; /* The connection */
static bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
connected=0,opt_raw_data=0,unbuffered=0,output_tables=0,
no_rehash=0,skip_updates=0,safe_updates=0,one_database=0,
- opt_compress=0,
+ opt_compress=0, using_opt_local_infile=0,
vertical=0,skip_line_numbers=0,skip_column_names=0,opt_html=0,
opt_nopager=1, opt_outfile=0, no_named_cmds=1;
-static uint verbose=0,opt_silent=0,opt_mysql_port=0;
+static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static my_string opt_mysql_unix_port=0;
static int connect_flag=CLIENT_INTERACTIVE;
static char *current_host,*current_db,*current_user=0,*opt_password=0,
@@ -394,6 +394,7 @@ static struct option long_options[] =
{"html", no_argument, 0, 'H'},
{"host", required_argument, 0, 'h'},
{"ignore-spaces", no_argument, 0, 'i'},
+ {"local-infile", optional_argument, 0, OPT_LOCAL_INFILE},
{"no-auto-rehash",no_argument, 0, 'A'},
{"no-named-commands", no_argument, 0, 'g'},
{"no-tee", no_argument, 0, OPT_NOTEE},
@@ -693,6 +694,10 @@ static int get_options(int argc, char **argv)
case 'C':
opt_compress=1;
break;
+ case OPT_LOCAL_INFILE:
+ using_opt_local_infile=1;
+ opt_local_infile= test(!optarg || atoi(optarg)>0);
+ break;
case 'L':
skip_line_numbers=1;
break;
@@ -2105,6 +2110,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
}
if (opt_compress)
mysql_options(&mysql,MYSQL_OPT_COMPRESS,NullS);
+ if (using_opt_local_infile)
+ mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile);
#ifdef HAVE_OPENSSL
if (opt_use_ssl)
mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,