MDEV-7397: SIGSEGV on inserting into a key-less table

When wsrep is enabled, an md5 hash of the entire row is calculated
for tables with no PK. It, however segfaulted as the md5 context
object was not properly constructed.

Fixed by ensuring that the YaSSL's context object gets constructed
explicitly at the specified pre-allocated location (placement)
before its used.

Added a test case.
This commit is contained in:
Nirbhay Choubey 2014-12-31 19:52:35 -05:00
commit 61f73d40ca
3 changed files with 40 additions and 0 deletions

View file

@ -27,4 +27,21 @@ c1
4
5
DROP TABLE t1;
#
# MDEV-7397: SIGSEGV on inserting into a key-less table
#
# On node_1
USE test;
CREATE TABLE t1(c1 INT) ENGINE=INNODB;
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;
c1
1
# On node_2
SELECT * FROM test.t1;
c1
1
DROP TABLE t1;
# End of test

View file

@ -22,5 +22,27 @@ SELECT * FROM test.t1;
# Cleanup
DROP TABLE t1;
--echo #
--echo # MDEV-7397: SIGSEGV on inserting into a key-less table
--echo #
--echo
--echo # On node_1
--connection node_1
USE test;
CREATE TABLE t1(c1 INT) ENGINE=INNODB;
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;
--echo
--echo # On node_2
--connection node_2
SELECT * FROM test.t1;
--let $galera_diff_statement = SELECT * FROM t1
--source include/galera_diff.inc
# Cleanup
DROP TABLE t1;
--source include/galera_end.inc
--echo # End of test

View file

@ -34,6 +34,7 @@ typedef TaoCrypt::MD5 MD5_CTX;
static void md5_init(MD5_CTX *context)
{
context= new(context) MD5_CTX;
context->Init();
}