Commit b5eddef1 authored by pekka@mysql.com's avatar pekka@mysql.com

ndb - valgrind fixes

parent c199d7fd
...@@ -1004,6 +1004,11 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames) ...@@ -1004,6 +1004,11 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames)
return 0; return 0;
} }
// avoid alignment problem and memory overrun
Uint32 name_buf[(MAX_TAB_NAME_SIZE + 3) / 4];
strncpy((char*)name_buf, name, sizeof(name_buf)); // strncpy null-pads
name = (char*)name_buf;
req->senderRef = m_reference; req->senderRef = m_reference;
req->senderData = 0; req->senderData = 0;
req->requestType = req->requestType =
...@@ -1015,7 +1020,7 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames) ...@@ -1015,7 +1020,7 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames)
tSignal.theLength = GetTabInfoReq::SignalLength; tSignal.theLength = GetTabInfoReq::SignalLength;
LinearSectionPtr ptr[1]; LinearSectionPtr ptr[1];
ptr[0].p = (Uint32*)name; ptr[0].p = (Uint32*)name;
ptr[0].sz = strLen; ptr[0].sz = (strLen + 3) / 4;
return getTable(&tSignal, ptr, 1, fullyQualifiedNames); return getTable(&tSignal, ptr, 1, fullyQualifiedNames);
} }
......
...@@ -365,7 +365,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize) ...@@ -365,7 +365,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize)
{ {
if (b.m_nullable && urandom(10) == 0) { if (b.m_nullable && urandom(10) == 0) {
v.m_len = 0; v.m_len = 0;
delete v.m_val; delete [] v.m_val;
v.m_val = 0; v.m_val = 0;
v.m_buf = new char [1]; v.m_buf = new char [1];
} else { } else {
...@@ -375,7 +375,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize) ...@@ -375,7 +375,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize)
v.m_len = urandom(b.m_inline); v.m_len = urandom(b.m_inline);
else else
v.m_len = urandom(b.m_inline + g_opt.m_parts * b.m_partsize + 1); v.m_len = urandom(b.m_inline + g_opt.m_parts * b.m_partsize + 1);
delete v.m_val; delete [] v.m_val;
v.m_val = new char [v.m_len + 1]; v.m_val = new char [v.m_len + 1];
for (unsigned i = 0; i < v.m_len; i++) for (unsigned i = 0; i < v.m_len; i++)
v.m_val[i] = 'a' + urandom(25); v.m_val[i] = 'a' + urandom(25);
...@@ -1449,6 +1449,7 @@ testperf() ...@@ -1449,6 +1449,7 @@ testperf()
if (! testcase('p')) if (! testcase('p'))
return 0; return 0;
DBG("=== perf test ==="); DBG("=== perf test ===");
g_bh1 = g_bh2 = 0;
g_ndb = new Ndb(g_ncc, "TEST_DB"); g_ndb = new Ndb(g_ncc, "TEST_DB");
CHK(g_ndb->init() == 0); CHK(g_ndb->init() == 0);
CHK(g_ndb->waitUntilReady() == 0); CHK(g_ndb->waitUntilReady() == 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment