From: Alexander Barkov Date: March 3 2011 12:07pm Subject: bzr commit into mysql-5.1 branch (alexander.barkov:3608) Bug#59648 Bug#11766519 List-Archive: http://lists.mysql.com/commits/132371 X-Bug: 59648,11766519 Message-Id: <201103031207.p23C7WM7026809@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1546365093159860593==" --===============1546365093159860593== 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-5.1/ based on revid:alexander.barkov@stripped 3608 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 necessarily 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, which was previously copied from args[1]->val_str(), was 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 2010-04-06 07:26:59 +0000 +++ b/mysql-test/r/ctype_ucs.result 2011-03-03 12:04:04 +0000 @@ -1238,4 +1238,10 @@ 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 === 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 12:04:04 +0000 @@ -0,0 +1,19 @@ +# +# Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed. +# +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: '?T?iK?j??' +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 2010-04-06 07:26:59 +0000 +++ b/mysql-test/t/ctype_ucs.test 2011-03-03 12:04:04 +0000 @@ -741,4 +741,9 @@ 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 12:04:04 +0000 @@ -0,0 +1,12 @@ +-- source include/have_ssl.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-02-22 21:03:32 +0000 +++ b/sql/item_func.cc 2011-03-03 12:04:04 +0000 @@ -840,7 +840,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-01-17 12:11:33 +0000 +++ b/sql/item_strfunc.cc 2011-03-03 12:04:04 +0000 @@ -519,6 +519,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)); @@ -606,6 +607,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: --===============1546365093159860593== 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\ # 7n48nyf81a0n9dvd # target_branch: file:///home/bar/mysql-bzr/mysql-5.1/ # testament_sha1: e98d04ec89182b6ee639fe94b78549e8b1efac3a # timestamp: 2011-03-03 15:07:32 +0300 # base_revision_id: alexander.barkov@stripped\ # 27l0ldhayo0bl0et # # Begin bundle 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 xMCOIFhXQVHYeJ/UXckU4UJAw1KOWA== --===============1546365093159860593==--