From 543bea32e16bbe317171d24888a5f0c751ea19e8 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 9 Nov 2014 16:57:56 +0100 Subject: Core/DBLayer: Fixed a few mismatched types and possible invalid memory access with aggregate fields in queries --- src/server/shared/Database/PreparedStatement.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server/shared/Database/PreparedStatement.cpp') diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index 1f036b5bf0a..3ea3c969a4c 100644 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -72,6 +72,7 @@ void PreparedStatement::BindParameters() break; case TYPE_BINARY: m_stmt->setBinary(i, statement_data[i].binary, false); + break; case TYPE_NULL: m_stmt->setNull(i); break; @@ -357,7 +358,7 @@ void MySQLPreparedStatement::setBinary(const uint8 index, const std::vectorbuffer_type = MYSQL_TYPE_VAR_STRING; + param->buffer_type = MYSQL_TYPE_BLOB; delete [] static_cast(param->buffer); param->buffer = new char[len]; param->buffer_length = len; @@ -365,7 +366,10 @@ void MySQLPreparedStatement::setBinary(const uint8 index, const std::vectorlength; param->length = new unsigned long(len); if (isString) + { *param->length -= 1; + param->buffer_type = MYSQL_TYPE_VAR_STRING; + } memcpy(param->buffer, value.data(), len); } -- cgit v1.2.3