From: Sergey Vojtovich Date: December 1 2010 12:56pm Subject: bzr commit into mysql-5.5-bugteam branch (sergey.vojtovich:3151) Bug#58205 List-Archive: http://lists.mysql.com/commits/125651 X-Bug: 58205 Message-Id: <201012011253.oAULGHuH031697@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3861088401673940252==" --===============3861088401673940252== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/svoj/mysql/server/mysql-5.5-bugteam-bug58205/ based on revid:georgi.kodinov@stripped 3151 Sergey Vojtovich 2010-12-01 BUG#58205 - Valgrind failure in fn_format when called from archive_discover Fixed buffer underrun in cleanup_dirname(). Also fixed that original (unencoded) database and table names were used to discover archive tables. @ mysql-test/r/archive.result A test case for BUG#58205. @ mysql-test/t/archive.test A test case for BUG#58205. @ mysys/mf_pack.c Fixed buffer underrun in cleanup_dirname(), when it gets path like "a/../" (relative path, where first directory is to be cut off). @ storage/archive/ha_archive.cc Handler discover method gets database and table names as is. It must use build_table_filename() to get name similar to what it gets on create() and open(). modified: mysql-test/r/archive.result mysql-test/t/archive.test mysys/mf_pack.c storage/archive/ha_archive.cc === modified file 'mysql-test/r/archive.result' --- a/mysql-test/r/archive.result 2010-07-26 15:54:20 +0000 +++ b/mysql-test/r/archive.result 2010-12-01 12:56:46 +0000 @@ -12801,3 +12801,9 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 DROP TABLE t1; +# +# BUG#58205 - Valgrind failure in fn_format when called from +# archive_discover +# +CREATE TABLE `a/../`(a INT) ENGINE=ARCHIVE; +DROP TABLE `a/../`; === modified file 'mysql-test/t/archive.test' --- a/mysql-test/t/archive.test 2010-07-26 15:54:20 +0000 +++ b/mysql-test/t/archive.test 2010-12-01 12:56:46 +0000 @@ -1722,3 +1722,11 @@ INSERT INTO t1 VALUES (2); SELECT * FROM t1 ORDER BY a; SHOW CREATE TABLE t1; DROP TABLE t1; + +--echo # +--echo # BUG#58205 - Valgrind failure in fn_format when called from +--echo # archive_discover +--echo # +CREATE TABLE `a/../`(a INT) ENGINE=ARCHIVE; +remove_file $MYSQLD_DATADIR/test/a@002f@002e@002e@stripped; +DROP TABLE `a/../`; === modified file 'mysys/mf_pack.c' --- a/mysys/mf_pack.c 2010-07-15 13:47:50 +0000 +++ b/mysys/mf_pack.c 2010-12-01 12:56:46 +0000 @@ -192,7 +192,8 @@ size_t cleanup_dirname(register char *to end_parentdir=pos; while (pos >= start && *pos != FN_LIBCHAR) /* remove prev dir */ pos--; - if (pos[1] == FN_HOMELIB || memcmp(pos,parent,length) == 0) + if (pos[1] == FN_HOMELIB || + (pos > start && memcmp(pos, parent, length) == 0)) { /* Don't remove ~user/ */ pos=strmov(end_parentdir+1,parent); *pos=FN_LIBCHAR; === modified file 'storage/archive/ha_archive.cc' --- a/storage/archive/ha_archive.cc 2010-10-06 14:34:28 +0000 +++ b/storage/archive/ha_archive.cc 2010-12-01 12:56:46 +0000 @@ -20,6 +20,7 @@ #include "sql_priv.h" #include "probes_mysql.h" #include "sql_class.h" // SSV +#include "sql_table.h" #include #include "ha_archive.h" @@ -256,7 +257,7 @@ int archive_discover(handlerton *hton, T char *frm_ptr; MY_STAT file_stat; - fn_format(az_file, name, db, ARZ, MY_REPLACE_EXT | MY_UNPACK_FILENAME); + build_table_filename(az_file, sizeof(az_file) - 1, db, name, ARZ, 0); if (!(my_stat(az_file, &file_stat, MYF(0)))) goto err; --===============3861088401673940252== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/sergey.vojtovich@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.vojtovich@stripped\ # ixj9g9x4ll6ilasb # target_branch: file:///home/svoj/mysql/server/mysql-5.5-bugteam-\ # bug58205/ # testament_sha1: ac6e0b84dc86b8ece41510f417741defd2a1742d # timestamp: 2010-12-01 15:56:56 +0300 # base_revision_id: georgi.kodinov@stripped\ # 79xf3b8exzq0ebzk # # Begin bundle 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 5+rA --===============3861088401673940252==--