Console View
|
Categories: connectors experimental galera main |
|
| connectors | experimental | galera | main | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41803 mariadb-binlog --raw takes the output file name from Rotate events without checking it mariadb-binlog --raw appended the file name from a Rotate event to the --result-file prefix, so a malicious server could make it write files outside that directory. Reject a Rotate event file name with a directory component - a legitimate server only puts a bare file name in the Rotate event Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41808 repeated CTE references keep reparsing exponentially on time and memory Every reference to a CTE after the first re-parses its specification and recursively resolves the references inside the clone, so a chain of CTEs each referencing the previous one twice expands to 2^N re-parses from linear-size SQL, exhausting CPU and memory at parse time. Bound the number of specification clones per statement. Assisted-by: Claude:claude-opus-4-8 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
wip: versioning.rpl_row 'row' CURRENT_TEST: versioning.rpl_row mysqltest: At line 145: query 'set statement sql_log_bin=0 for create table t (id int primary key, a int, unique (a)) engine=innodb with system versioning' failed: ER_TABLE_EXISTS_ERROR (1050): Table 't' already exists |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cleanup: undefined function declarations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset rdb_datadic.cc:558 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONNECT: reset vptr before writing an object to a file pointers make no sense there |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONNECT: json_bson_file_priv test fails in MSAN 1. the fix for MDEV-41613 added the first ever test for jfile_bjson(). this UDF allocates structures on the heap and dumps them to a file with fwrite(). Structures may have padding, bytes in padding stay not initialized and MSAN gets unhappy when they're fwritten. Let's clear the allocated memory area for file-writing UDFs 2. jbin_set_item sends BSON structure as blob in the result set. So this structure must not have uninitialized bytes either. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
fix RPAD(), LPAD() and INSERT() not to mangle its arguments they used to overwrite the charset of their arguments, this is incorrect and led to wrong results |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
cleanup: CONNECT rest.test no need to run the same CREATE TABLE twice, first to check if it works and then to test its result |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41804 deeply nested ROWs crash add check_stack_overrun() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Miroslav Rajcic
miroslav.rajcic@oracle.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Bug#39905057: MySQL ExtractValue unclosed CDATA length underflow causes mysqld heap overflow / crash Problem: ======== The XML scanner reports an unterminated <![CDATA[ section as a valid CDATA token. Its end pointer remains at the opening delimiter, while the parser unconditionally removes the opening and closing delimiters. This underflows the value length. ExtractValue() can subsequently pass that length to String::append(), causing a heap overwrite and mysqld crash. Root Cause: =========== my_xml_scan() only sets the token end when it finds ]]>, but my_xml_parse() assumes every CDATA token is complete. Solution: ========= Detect EOF before the CDATA terminator and return a parse error before calling the XML value handler. Add an ExtractValue() regression test verifying that unterminated CDATA is rejected with a warning. Change-Id: I142bafd9ddea185f6b2e87a80af4894f10168291 Fixes MDEV-39571, MDEV-41407 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
wip: versioning.rpl_row 'row' CURRENT_TEST: versioning.rpl_row mysqltest: At line 145: query 'set statement sql_log_bin=0 for create table t (id int primary key, a int, unique (a)) engine=innodb with system versioning' failed: ER_TABLE_EXISTS_ERROR (1050): Table 't' already exists |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41803 mariadb-binlog --raw takes the output file name from Rotate events without checking it mariadb-binlog --raw appended the file name from a Rotate event to the --result-file prefix, so a malicious server could make it write files outside that directory. Reject a Rotate event file name with a directory component - a legitimate server only puts a bare file name in the Rotate event Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41496 OOB write with RPAD() crash and multi-byte charsets and uservar Item's charset is metadata, it's known at fix_fields and does not change later. User variables can violate this invariant if they're changed and used in the same query. Let's always wrap such variables in Item_func_conv_charset() to make sure the caller always gets the same fixed charset, no matter what the actual variable value is. Variables that aren't changed in the same query do not get this unnecessary conversion. Note that in --ps the charset might resolve differently. This is not a bug, querying and modifying a user variable in the same query is a documented UB. But both in nm and in ps both arguments of RPAD() always have the same charset, so the result is internally consistent and there's no OOB access. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-40727 fix galera.MDEV-40727 on symlinked vardir and non-Linux The SST script logs physical paths, so the search failed when the vardir is a symlink (e.g. to /dev/shm). Match only the part below the vardir, run the test on Linux only (elsewhere nothing is logged), and suppress node_2's warning on the replicated DROP of the shared file. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
connect.json_bson_file_priv fails in --cursor udf should set max_length large enough to fit the error message |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-39306 fix race in versioning.rpl_row The slave created table t before the master's previous DROP TABLE t was replicated. Sync the slave after the drops. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41622 INSERT crashes on deeply nested GeometryCollection - get_data_size() and init_from_wkb() return their error values on stack overrun, not a valid-looking length - add stack checks to the remaining recursive GeometryCollection methods: wkt, json, mbr, area, length, dimension, store_shapes - test non-GEOMETRY column and SELECT paths Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Lawrin Novitsky
lawrin.novitsky@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONCPP-173 Wtrong display size for string data with MySQL server The fix removes own array with collation's max char len data and makes use of C/C API for that. Existing tests cover this case. Also the patch removes large family of assertTrue for integer and floating poing types and substitutes them w/ templated functions. Also introduced ASSERT_ONEOF(result, expected1, ...) to look up values in the given set of possible values. This allows to have ht compared value in the output in case this assertion fails. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41808 repeated CTE references keep reparsing exponentially on time and memory Every reference to a CTE after the first re-parses its specification and recursively resolves the references inside the clone, so a chain of CTEs each referencing the previous one twice expands to 2^N re-parses from linear-size SQL, exhausting CPU and memory at parse time. Bound the number of specification clones per statement. Assisted-by: Claude:claude-opus-4-8 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
fix RPAD(), LPAD() and INSERT() not to mangle its arguments they used to overwrite the charset of their arguments, this is incorrect and led to wrong results |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
connect.json_bson_file_priv fails in --cursor udf should set max_length large enough to fit the error message |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Xcurl * drop the redundant linux-only check "does curl exist?", let it fail as on Windows, when curl is executed (also that branch was missing one pclose()) * use _exit() not exit() - see `man vfork` * on linux: wait for the correct (!) child to exit, don't ignore its failures (Windows code didn't) * rephrase awkward message |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41801 "performance_schema" is compared case-sensitively in the engine, case-insensitively elsewhere With lower_case_table_names=0 the performance_schema engine discovered its tables only under the exact name, while ACL checks, is_perfschema_db() and mariadb-dump matched the name case-insensitively. A database named, for example, PERFORMANCE_SCHEMA was an ordinary database that got performance_schema access rules. Compare the name case-insensitively in the engine too. Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41496 OOB write with RPAD() crash and multi-byte charsets and uservar Item's charset is metadata, it's known at fix_fields and does not change later. User variables can violate this invariant if they're changed and used in the same query. Let's always wrap such variables in Item_func_conv_charset() to make sure the caller always gets the same fixed charset, no matter what the actual variable value is. Variables that aren't changed in the same query do not get this unnecessary conversion. Note that in --ps the charset might resolve differently. This is not a bug, querying and modifying a user variable in the same query is a documented UB. But both in nm and in ps both arguments of RPAD() always have the same charset, so the result is internally consistent and there's no OOB access. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
fix versioning.rpl_row 'row' mysqltest: At line 145: query 'set statement sql_log_bin=0 for create table t (id int primary key, a int, unique (a)) engine=innodb with system versioning' failed: ER_TABLE_EXISTS_ERROR (1050): Table 't' already exists make sure `drop table t` propagates before creating a new table t |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cleanup: undefined function declarations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41458 Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' failed in get_n_sincos() With tiny *ex and *ey the sum of squares underflows and q becomes inf, use hypot() which is under- and overflow safe. Also, fix ab/(d*d) divison, for good measure |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
cleanup: CONNECT use a local HTTP server in connect.rest The test depended on an external site, so it was slow and unreliable. Serve std_data/bios.json from a forked perl server instead. Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONNECT: reset vptr before writing an object to a file pointers make no sense there |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41622 INSERT crashes on deeply nested GeometryCollection - get_data_size() and init_from_wkb() return their error values on stack overrun, not a valid-looking length - add stack checks to the remaining recursive GeometryCollection methods: wkt, json, mbr, area, length, dimension, store_shapes - test non-GEOMETRY column and SELECT paths Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Xcurl * drop the redundant linux-only check "does curl exist?", let it fail as on Windows, when curl is executed (also that branch was missing one pclose()) * use _exit() not exit() - see `man vfork` * on linux: wait for the correct (!) child to exit, don't ignore its failures (Windows code didn't) * rephrase awkward message |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-40386 DuckDB configure fails in rpm builds DuckDB's configure checks link with -specs=redhat-package-notes but without the RPM_* environment, and the linker launcher list was split into separate cmake arguments. Run DuckDB's cmake under the launcher's env and pass the launcher with a non-";" list separator. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Miroslav Rajcic
miroslav.rajcic@oracle.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Bug#39905057: MySQL ExtractValue unclosed CDATA length underflow causes mysqld heap overflow / crash Problem: ======== The XML scanner reports an unterminated <![CDATA[ section as a valid CDATA token. Its end pointer remains at the opening delimiter, while the parser unconditionally removes the opening and closing delimiters. This underflows the value length. ExtractValue() can subsequently pass that length to String::append(), causing a heap overwrite and mysqld crash. Root Cause: =========== my_xml_scan() only sets the token end when it finds ]]>, but my_xml_parse() assumes every CDATA token is complete. Solution: ========= Detect EOF before the CDATA terminator and return a parse error before calling the XML value handler. Add an ExtractValue() regression test verifying that unterminated CDATA is rejected with a warning. Change-Id: I142bafd9ddea185f6b2e87a80af4894f10168291 Fixes MDEV-39571, MDEV-41407 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset rdb_datadic.cc:558 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41801 "performance_schema" is compared case-sensitively in the engine, case-insensitively elsewhere With lower_case_table_names=0 the performance_schema engine discovered its tables only under the exact name, while ACL checks, is_perfschema_db() and mariadb-dump matched the name case-insensitively. A database named, for example, PERFORMANCE_SCHEMA was an ordinary database that got performance_schema access rules. Compare the name case-insensitively in the engine too. Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41458 Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' failed in get_n_sincos() With tiny *ex and *ey the sum of squares underflows and q becomes inf, use hypot() which is under- and overflow safe. Also, fix ab/(d*d) divison, for good measure |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fixup! CONNECT: json_bson_file_priv test fails in MSAN | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41804 deeply nested ROWs crash add check_stack_overrun() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONNECT: json_bson_file_priv test fails in MSAN 1. the fix for MDEV-41613 added the first ever test for jfile_bjson(). this UDF allocates structures on the heap and dumps them to a file with fwrite(). Structures may have padding, bytes in padding stay not initialized and MSAN gets unhappy when they're fwritten. Let's clear the allocated memory area for file-writing UDFs 2. jbin_set_item sends BSON structure as blob in the result set. So this structure must not have uninitialized bytes either. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||