The problem is that when copying the supplied username and
database, no bounds checking is performed on the fixed-length
buffer. A sufficiently large (> 512) user string can easily
cause stack corruption. Since this API can be used from PHP
and other programs, this is a serious problem.
The solution is to increase the buffer size to the accepted
size in similar functions and perform bounds checking when
copying the username and database.
libmysql/libmysql.c:
Increase the buffer size and perform bounds checking when copying
the supplied arguments.
tests/mysql_client_test.c:
Add test case for Bug#31669
in the SELECT INTO OUTFILE clause starts with a special
character (one of n, t, r, b, 0, Z or N) and ENCLOSED BY
is empty, every occurrence of this character within a
field value is duplicated.
Duplication has been avoided.
New warning message has been added: "First character of
the FIELDS TERMINATED string is ambiguous; please use
non-optional and non-empty FIELDS ENCLOSED BY".
mysql-test/r/outfile_loaddata.result:
BitKeeper file /home/uchum/work/bk/5.0-opt-31663/mysql-test/r/outfile_loaddata.result
Added test case for bug #31663.
mysql-test/t/outfile_loaddata.test:
BitKeeper file /home/uchum/work/bk/5.0-opt-31663/mysql-test/t/outfile_loaddata.test
Added test case for bug #31663.
sql/sql_class.h:
Fixed bug #31663.
The select_export::is_ambiguous_field_term field has been added.
This field is true if select_export::field_sep_char contains
the first char of the FIELDS TERMINATED BY (ENCLOSED BY is empty),
and items can contain this character.
The select_export::field_term_char field has been added (first
char of the FIELDS TERMINATED BY string or INT_MAX).
sql/sql_class.cc:
Fixed bug #31663.
The select_export::prepare method has been modified to calculate
a value of the select_export::is_ambiguous_field_term field and
to warn if this value is true.
The select_export::send_data method has been modified to
avoid escaping or duplication of the field_set_char if
is_ambiguous_field_term is true.
sql/share/errmsg.txt:
Fixed bug #31663.
The ER_AMBIGUOUS_FIELD_TERM warning has been added.
into mysql.com:/home/hf/work/30638/my51-30638
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/mi_write.c:
Auto merged
storage/myisam/sort.c:
Auto merged
sql/opt_range.cc:
merging
sql/sql_map.cc:
merging
storage/federated/ha_federated.cc:
merging
storage/heap/ha_heap.cc:
merging
myisam/mi_write.c:
type conversion fixed
myisam/sort.c:
type conversion fixed
sql/ha_federated.cc:
type conversion fixed
sql/ha_heap.cc:
type conversion fixed
sql/ha_innodb.cc:
type conversion fixed
sql/ha_myisam.cc:
type conversion fixed
sql/opt_range.cc:
type conversion fixed
sql/sql_map.cc:
type conversion fixed
sql/sql_select.cc:
type conversion fixed
sql/sql_update.cc:
type conversion fixed
partial backport from 6.2 + add fix of bug
storage/ndb/include/kernel/GlobalSignalNumbers.h:
add prep_copy_frag
storage/ndb/include/kernel/signaldata/AccScan.hpp:
add new argument specifying which page to scan to
storage/ndb/include/kernel/signaldata/CopyFrag.hpp:
add new argument specifying which page to scan to
storage/ndb/include/ndb_version.h.in:
add versioning checks for prep_copy_frag
storage/ndb/src/common/debugger/signaldata/SignalNames.cpp:
add prep_copy_frag
storage/ndb/src/kernel/blocks/ERROR_codes.txt:
new error codes
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
add new to-step
storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp:
add new to-step
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
add new to-step
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
add new to-step
storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp:
add new to-step
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
add new to-step
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
add new argument specifying which page to scan to
storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
add utility to get max page used by fragment
storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
add NR scan to > frag.noOfPages
storage/ndb/test/ndbapi/testSystemRestart.cpp:
add testcase
storage/ndb/test/run-test/daily-basic-tests.txt:
add testcase
storage/ndb/test/src/NdbRestarts.cpp:
add testcase
added correct handling of NULL values for lookup fields
mysql-test/r/information_schema.result:
test result
mysql-test/t/information_schema.test:
test case
sql/sql_show.cc:
added correct handling of NULL values for lookup fields
- Fix for
Bug#28827 Partition test needs archive engine
Bug#26669 Two tests on partition fail while blackhole engine is missing
Solution: Move ARCHIVE and BLACKHOLE sub test cases to their own main test.
- The two bugs above + the fact that CSV could be also sometimes not
available --> Move also CSV sub tests out.
- Minor cleanups
- Replace error numbers with error names
- fix typos, wrong comments
- remove redundant sub test cases
- add missing drop database
- SET GLOBAL general_log = default is wrong, = 1 is correct
mysql-test/r/partition.result:
Updated results
mysql-test/t/partition.test:
Remove ARCHIVE, BLACKHOLE and CSV related sub test cases.
mysql-test/r/partition_archive.result:
Expected results
mysql-test/r/partition_blackhole.result:
Expected results
mysql-test/r/partition_csv.result:
Expected results
mysql-test/t/partition_archive.test:
Tests for the partition storage engine in connection with the
storage engine ARCHIVE.
mysql-test/t/partition_blackhole.test:
Tests for the partition storage engine in connection with the
storage engine BLACKHOLE.
mysql-test/t/partition_csv.test:
Tests for the partition storage engine in connection with the
storage engine CSV.
When doing indexed search the server constructs a key image for
faster comparison to the stored keys. While doing that it must not
perform (and stop if they fail) the additional date checks that can
be turned on by the SQL mode because there already may be values in
the table that don't comply with the error checks.
Fixed by ignoring these SQL mode bits while making the key image.
mysql-test/r/type_date.result:
Bug #28687: test case
mysql-test/t/type_date.test:
Bug #28687: test case
sql/item.cc:
Bug #28687: no invalid date warnings
an error, asserts server
In case of a fatal error during filesort in find_all_keys() the error
was returned without the necessary handler uninitialization.
Fixed by changing the code so that handler uninitialization is performed
before returning the error.
mysql-test/r/delete.result:
Added a test case for bug #31742.
mysql-test/t/delete.test:
Added a test case for bug #31742.
sql/filesort.cc:
In case of a fatal error in find_all_keys() do not return before doing
the necessary handler uninitialization steps.