Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
Sergei Golubchik
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
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
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
cleanup: undefined function declarations
Sergei Golubchik
UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset rdb_datadic.cc:558
Sergei Golubchik
CONNECT: reset vptr before writing an object to a file

pointers make no sense there
Sergei Golubchik
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
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
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
MDEV-41804 deeply nested ROWs crash

add check_stack_overrun()
Miroslav Rajcic
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
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
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
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
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
connect.json_bson_file_priv fails in --cursor

udf should set max_length large enough to fit the error message
Oleksandr Byelkin
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
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
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.
  • ccpp-sles12-amd64: build linux-connector_cpp failed -  stdio
Sergei Golubchik
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
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
connect.json_bson_file_priv fails in --cursor

udf should set max_length large enough to fit the error message
Sergei Golubchik
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
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
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
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
cleanup: undefined function declarations
Sergei Golubchik
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
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
CONNECT: reset vptr before writing an object to a file

pointers make no sense there
Sergei Golubchik
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
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
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
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
UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset rdb_datadic.cc:558
Sergei Golubchik
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
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
fixup! CONNECT: json_bson_file_priv test fails in MSAN
Sergei Golubchik
MDEV-41804 deeply nested ROWs crash

add check_stack_overrun()
Sergei Golubchik
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.