From: Alexander Barkov Date: March 3 2011 11:32am Subject: bzr commit into mysql-trunk branch (alexander.barkov:3723) Bug#59648 Bug#11766519 List-Archive: http://lists.mysql.com/commits/132369 X-Bug: 59648,11766519 Message-Id: <201103031132.p23BWxkH010498@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4613504612418166830==" --===============4613504612418166830== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bar/mysql-bzr/mysql-trunk.b59648/ based on revid:alexander.barkov@stripped 3723 Alexander Barkov 2011-03-03 BUG#11766519 (bug#59648): MY_STRTOLL10_MB2: ASSERTION `(*ENDPTR - S) % 2 == 0' FAILED Problem: wrong character set pointer was passed to my_strtoll10_mb2, which led to DBUG_ASSERT failure in some cases. @ mysql-test/r/func_encrypt_ucs2.result @ mysql-test/t/func_encrypt_ucs2.test @ mysql-test/r/ctype_ucs.result @ mysql-test/t/ctype_ucs.test Adding tests @ sql/item_func.cc "cs" initialization was wrong (res does not necessary point to &str_value) @ sql/item_strfunc.cc Item_func_dec_encrypt::val_str() and Item_func_des_descrypt::val_str() did not set character set for tmp_value the returned value, so the old value copied from args[1]->val_str() were incorrectly returned with tmp_value. added: mysql-test/r/func_encrypt_ucs2.result mysql-test/t/func_encrypt_ucs2.test modified: mysql-test/r/ctype_ucs.result mysql-test/t/ctype_ucs.test sql/item_func.cc sql/item_strfunc.cc === modified file 'mysql-test/r/ctype_ucs.result' --- a/mysql-test/r/ctype_ucs.result 2011-02-10 08:47:05 +0000 +++ b/mysql-test/r/ctype_ucs.result 2011-03-03 11:23:58 +0000 @@ -1304,6 +1304,12 @@ CREATE VIEW v1 AS SELECT 1 from t1 WHERE t1.b <=> (SELECT a FROM t1 WHERE a < SOME(SELECT '1')); DROP VIEW v1; DROP TABLE t1; +# +# Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed. +# +SELECT HEX(CHAR(COALESCE(NULL, CHAR(COUNT('%s') USING ucs2), 1, @@global.license, NULL) USING cp850)); +HEX(CHAR(COALESCE(NULL, CHAR(COUNT('%s') USING ucs2), 1, @@global.license, NULL) USING cp850)) +00 End of 5.0 tests # # Start of 5.5 tests === added file 'mysql-test/r/func_encrypt_ucs2.result' --- a/mysql-test/r/func_encrypt_ucs2.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/r/func_encrypt_ucs2.result 2011-03-03 11:23:58 +0000 @@ -0,0 +1,16 @@ +SELECT CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2))); +CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2))) +9 +SELECT CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED); +CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED) +0 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '\xFFT\xDCiK\x92j\xE6\xFC' +SELECT CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2))); +CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2))) +4 +SELECT CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED); +CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED) +0 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'test' === modified file 'mysql-test/t/ctype_ucs.test' --- a/mysql-test/t/ctype_ucs.test 2011-01-18 07:16:49 +0000 +++ b/mysql-test/t/ctype_ucs.test 2011-03-03 11:23:58 +0000 @@ -699,6 +699,11 @@ WHERE t1.b <=> (SELECT a FROM t1 WHERE a DROP VIEW v1; DROP TABLE t1; +--echo # +--echo # Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed. +--echo # +SELECT HEX(CHAR(COALESCE(NULL, CHAR(COUNT('%s') USING ucs2), 1, @@global.license, NULL) USING cp850)); + --echo End of 5.0 tests === added file 'mysql-test/t/func_encrypt_ucs2.test' --- a/mysql-test/t/func_encrypt_ucs2.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/t/func_encrypt_ucs2.test 2011-03-03 11:23:58 +0000 @@ -0,0 +1,12 @@ +-- source include/have_ssl_crypto_functs.inc +-- source include/have_ucs2.inc + +--echo # +--echo # Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed. +--echo # + +SELECT CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2))); +SELECT CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED); + +SELECT CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2))); +SELECT CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED); === modified file 'sql/item_func.cc' --- a/sql/item_func.cc 2011-03-01 14:47:01 +0000 +++ b/sql/item_func.cc 2011-03-03 11:23:58 +0000 @@ -886,7 +886,7 @@ longlong Item_func_numhybrid::val_int() return 0; char *end= (char*) res->ptr() + res->length(); - CHARSET_INFO *cs= str_value.charset(); + CHARSET_INFO *cs= res->charset(); return (*(cs->cset->strtoll10))(cs, res->ptr(), &end, &err_not_used); } default: === modified file 'sql/item_strfunc.cc' --- a/sql/item_strfunc.cc 2011-02-10 08:47:05 +0000 +++ b/sql/item_strfunc.cc 2011-03-03 11:23:58 +0000 @@ -796,6 +796,7 @@ String *Item_func_des_encrypt::val_str(S tmp_arg[res_length-1]=tail; // save extra length tmp_value.realloc(res_length+1); tmp_value.length(res_length+1); + tmp_value.set_charset(&my_charset_bin); tmp_value[0]=(char) (128 | key_number); // Real encryption bzero((char*) &ivec,sizeof(ivec)); @@ -883,6 +884,7 @@ String *Item_func_des_decrypt::val_str(S if ((tail=(uint) (uchar) tmp_value[length-2]) > 8) goto wrong_key; // Wrong key tmp_value.length(length-1-tail); + tmp_value.set_charset(&my_charset_bin); return &tmp_value; error: --===============4613504612418166830== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.barkov@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.barkov@stripped\ # jky4ll0lr63srjoy # target_branch: file:///home/bar/mysql-bzr/mysql-trunk.b59648/ # testament_sha1: ac2af296bdeae46addb0b0e1e44d7d1682da403e # timestamp: 2011-03-03 14:32:59 +0300 # base_revision_id: alexander.barkov@stripped\ # 2s4n0wnrb67b3iz8 # # Begin bundle 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 HY37wA== --===============4613504612418166830==--