Commit 9300b665 authored by Alexander Barkov's avatar Alexander Barkov

MDEV-24742 Server crashes in Charset::numchars / String::numchars

The crash happened because Item_aes_crypt::val_str() did not
set the character set of the result.
parent 5e3e5ccb
...@@ -4835,3 +4835,15 @@ DROP TABLE t1; ...@@ -4835,3 +4835,15 @@ DROP TABLE t1;
# #
# End of 10.1 tests # End of 10.1 tests
# #
#
# Start of 10.2 tests
#
#
# MDEV-24742 Server crashes in Charset::numchars / String::numchars
#
SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux');
NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux')
NULL
#
# End of 10.2 tests
#
...@@ -1932,3 +1932,19 @@ DROP TABLE t1; ...@@ -1932,3 +1932,19 @@ DROP TABLE t1;
--echo # --echo #
--echo # End of 10.1 tests --echo # End of 10.1 tests
--echo # --echo #
--echo #
--echo # Start of 10.2 tests
--echo #
--echo #
--echo # MDEV-24742 Server crashes in Charset::numchars / String::numchars
--echo #
SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux');
--echo #
--echo # End of 10.2 tests
--echo #
...@@ -338,6 +338,8 @@ String *Item_aes_crypt::val_str(String *str2) ...@@ -338,6 +338,8 @@ String *Item_aes_crypt::val_str(String *str2)
rkey, AES_KEY_LENGTH / 8, 0, 0)) rkey, AES_KEY_LENGTH / 8, 0, 0))
{ {
str2->length((uint) aes_length); str2->length((uint) aes_length);
DBUG_ASSERT(collation.collation == &my_charset_bin);
str2->set_charset(&my_charset_bin);
return str2; return str2;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment