summaryrefslogtreecommitdiff
path: root/sql/sql_parse.h
diff options
context:
space:
mode:
authorAlexander Barkov <alexander.barkov@oracle.com>2011-02-18 12:46:55 +0300
committerAlexander Barkov <alexander.barkov@oracle.com>2011-02-18 12:46:55 +0300
commitf4beb9294046ac368cfb66fc3270298a85dbdf4a (patch)
treef186d667dd96739f271ddf7e93c7389f259051a8 /sql/sql_parse.h
parent0db53b19b78c01d820463d727b0e73e97c5cd802 (diff)
downloadmariadb-git-f4beb9294046ac368cfb66fc3270298a85dbdf4a.tar.gz
Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server
Problem: ucs2 was correctly disallowed in "SET NAMES" only, while mysql_real_connect() and mysql_change_user() still allowed to use ucs2, which made server crash. Fix: disallow ucs2 in mysql_real_connect() and mysql_change_user(). @ sql/set_var.cc Using new function. @ sql/sql_acl.cc - Return error if character set initialization failed - Getting rid of pointer aliasing: Initialize user_name to NULL, to avoid double free(). @ sql/sql_connect.cc - in case of unsupported client character set send error and return true - in case of success return false @ sql/sql_connect.h - changing return type for thd_init_client_charset() to bool, to return errors to the caller @ sql/sql_parse.h - introducing a new function, to reuse in all places where we need to check client character set. @ tests/mysql_client_test.c Adding test
Diffstat (limited to 'sql/sql_parse.h')
-rw-r--r--sql/sql_parse.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/sql/sql_parse.h b/sql/sql_parse.h
index c9b0f981d19..9eea07401a2 100644
--- a/sql/sql_parse.h
+++ b/sql/sql_parse.h
@@ -197,4 +197,10 @@ check_table_access(THD *thd, ulong requirements,TABLE_LIST *tables,
bool check_global_access(THD *thd, ulong want_access);
+inline bool is_supported_parser_charset(CHARSET_INFO *cs)
+{
+ return test(cs->mbminlen == 1);
+}
+
+
#endif /* SQL_PARSE_INCLUDED */