diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-11-09 16:57:56 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-11-09 16:57:56 +0100 |
commit | 543bea32e16bbe317171d24888a5f0c751ea19e8 (patch) | |
tree | 3475ec61c0812ab9a6025cea6b4e4cd8696b2757 /src/server/shared/Database/PreparedStatement.cpp | |
parent | 18cce601b91e34b360a82a07365b6a3491a30ccb (diff) |
Core/DBLayer: Fixed a few mismatched types and possible invalid memory access with aggregate fields in queries
Diffstat (limited to 'src/server/shared/Database/PreparedStatement.cpp')
-rw-r--r-- | src/server/shared/Database/PreparedStatement.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
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::vector<uint m_paramsSet[index] = true; MYSQL_BIND* param = &m_bind[index]; size_t len = value.size(); - param->buffer_type = MYSQL_TYPE_VAR_STRING; + param->buffer_type = MYSQL_TYPE_BLOB; delete [] static_cast<char *>(param->buffer); param->buffer = new char[len]; param->buffer_length = len; @@ -365,7 +366,10 @@ void MySQLPreparedStatement::setBinary(const uint8 index, const std::vector<uint delete param->length; param->length = new unsigned long(len); if (isString) + { *param->length -= 1; + param->buffer_type = MYSQL_TYPE_VAR_STRING; + } memcpy(param->buffer, value.data(), len); } |