mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for Bug #21412 (client allows DELIMITER with backslash character)
BitKeeper/etc/ignore: Added mysql-test/t/tmp.test mysql-test/r/tmp.result client/tmp.diff to the ignore list client/mysql.cc: Fix for Bug #21412 (client allows DELIMITER with backslash) mysql-test/r/mysql.result: Added test case for Bug #21412 mysql-test/t/mysql.test: Added test case for Bug #21412
This commit is contained in:
@ -1318,3 +1318,6 @@ win/vs71cache.txt
|
|||||||
win/vs8cache.txt
|
win/vs8cache.txt
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
|
mysql-test/t/tmp.test
|
||||||
|
mysql-test/r/tmp.result
|
||||||
|
client/tmp.diff
|
||||||
|
@ -800,10 +800,23 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
default_charset_used= 1;
|
default_charset_used= 1;
|
||||||
break;
|
break;
|
||||||
case OPT_DELIMITER:
|
case OPT_DELIMITER:
|
||||||
if (argument == disabled_my_option)
|
if (argument == disabled_my_option)
|
||||||
|
{
|
||||||
strmov(delimiter, DEFAULT_DELIMITER);
|
strmov(delimiter, DEFAULT_DELIMITER);
|
||||||
else
|
}
|
||||||
strmake(delimiter, argument, sizeof(delimiter) - 1);
|
else
|
||||||
|
{
|
||||||
|
/* Check that delimiter does not contain a backslash */
|
||||||
|
if (!strstr(argument, "\\"))
|
||||||
|
{
|
||||||
|
strmake(delimiter, argument, sizeof(delimiter) - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
put_info("DELIMITER cannot contain a backslash character", INFO_ERROR);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
delimiter_length= (uint)strlen(delimiter);
|
delimiter_length= (uint)strlen(delimiter);
|
||||||
delimiter_str= delimiter;
|
delimiter_str= delimiter;
|
||||||
break;
|
break;
|
||||||
@ -3011,6 +3024,14 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
|
|||||||
INFO_ERROR);
|
INFO_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strstr(tmp, "\\"))
|
||||||
|
{
|
||||||
|
put_info("DELIMITER cannot contain a backslash character", INFO_ERROR);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
strmake(delimiter, tmp, sizeof(delimiter) - 1);
|
strmake(delimiter, tmp, sizeof(delimiter) - 1);
|
||||||
delimiter_length= (int)strlen(delimiter);
|
delimiter_length= (int)strlen(delimiter);
|
||||||
delimiter_str= delimiter;
|
delimiter_str= delimiter;
|
||||||
|
@ -139,4 +139,8 @@ ERROR at line 1: USE must be followed by a database name
|
|||||||
\\
|
\\
|
||||||
';
|
';
|
||||||
';
|
';
|
||||||
|
1
|
||||||
|
1
|
||||||
|
ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||||
|
ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -147,4 +147,22 @@ drop table t1;
|
|||||||
--exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
--exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #21412: mysql cmdline client allows backslash(es)
|
||||||
|
# as delimiter but can't recognize them
|
||||||
|
#
|
||||||
|
|
||||||
|
# This should work just fine...
|
||||||
|
--exec echo "DELIMITER /" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
||||||
|
--exec echo "SELECT 1/" >> $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
||||||
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
||||||
|
|
||||||
|
# This should give an error...
|
||||||
|
--exec echo "DELIMITER \\" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
||||||
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
||||||
|
|
||||||
|
# As should this...
|
||||||
|
--exec echo "DELIMITER \\\\" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
||||||
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
Reference in New Issue
Block a user