summaryrefslogtreecommitdiff
path: root/mysql-test/main/ctype_euckr.result
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2020-05-29 11:07:55 +0400
committerAlexander Barkov <bar@mariadb.com>2020-05-29 11:15:28 +0400
commitcdc2508ed1a5488f3b20fae7ee8a72b4275a65b6 (patch)
treea49419144c5be0aa4057afceb58bfeaf064609ee /mysql-test/main/ctype_euckr.result
parentc2a929185c147fc85bbf91e2c537bcdd98f2e680 (diff)
downloadmariadb-git-cdc2508ed1a5488f3b20fae7ee8a72b4275a65b6.tar.gz
MDEV-22625 SIGSEGV in intern_find_sys_var (optimized builds)
The constructor of Lex_ident_sys returns LEX_CSTRING(NULL,0) if character set conversion goes wrong, and raises the "wrong character string" error in the diagnostics area. The code in sql_yacc.yy did not check Lex_ident_sys::ptr against NULL, so the execution entered functions that did not expect NULL (and crashed). Fixing the code to do MYSQL_YYABORT if Lex_ident_sys::ptr is NULL after constructing.
Diffstat (limited to 'mysql-test/main/ctype_euckr.result')
-rw-r--r--mysql-test/main/ctype_euckr.result58
1 files changed, 58 insertions, 0 deletions
diff --git a/mysql-test/main/ctype_euckr.result b/mysql-test/main/ctype_euckr.result
index 9f98e39c59e..5bfcc7071f3 100644
--- a/mysql-test/main/ctype_euckr.result
+++ b/mysql-test/main/ctype_euckr.result
@@ -26009,3 +26009,61 @@ SET DEFAULT_STORAGE_ENGINE=Default;
#
# End of 10.2 tests
#
+#
+# Start of 10.5 tests
+#
+#
+# MDEV-22625 SIGSEGV in intern_find_sys_var (optimized builds)
+#
+SET NAMES euckr;
+SET @seq=_euckr 0xA2E8;
+#
+# SET STATEMENT (bad|good.bad|bad.good)=1
+#
+EXECUTE IMMEDIATE CONCAT('SET STATEMENT ',@seq, '=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET STATEMENT ',@seq, '.a=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET STATEMENT a.',@seq, '=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+#
+# SET SESSION (bad|good.bad|bad.good)=1
+#
+EXECUTE IMMEDIATE CONCAT('SET SESSION ',@seq, '=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET SESSION ',@seq, '.a=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET SESSION a.',@seq, '=1 SELECT 1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+#
+# SET (bad|good.bad|bad.good)=1
+#
+EXECUTE IMMEDIATE CONCAT('SET ', @seq, '=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET ', @seq, '.a=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('SET a.', @seq, '=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+#
+# Oracle SP call: BEGIN (bad|good.bad|bad.good)(params); END
+#
+SET sql_mode=ORACLE;
+EXECUTE IMMEDIATE CONCAT('BEGIN ',@seq, '(1); END;');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('BEGIN ',@seq, '.a(1); END;');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('BEGIN a.',@seq, '(1); END;');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+#
+# Oracle assignment: (bad|good.bad|bad.good):= value
+#
+EXECUTE IMMEDIATE CONCAT(@seq, ':=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT(@seq, '.a:=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1');
+ERROR HY000: Invalid euckr character string: '\xA2\xE8'
+SET sql_mode=DEFAULT;
+#
+# End of 10.5 tests
+#