aboutsummaryrefslogtreecommitdiff
path: root/contrib/native
diff options
context:
space:
mode:
authorLaurent Goujon <laurent@dremio.com>2017-07-11 22:25:44 -0700
committerLaurent Goujon <laurent@dremio.com>2017-07-12 10:57:27 -0700
commit35d07c3bd84ee8e8a4019a18888461e130c45d42 (patch)
tree54488bd3d861b04df9a007ed4943eea6d8f1fd0f /contrib/native
parent35a1ec66726fc5a77ea61cac3b6f3bbc33b8564a (diff)
DRILL-5668: Fix C++ connector crash on error
Fix C++ connector crash when receiving error messages exceeding a given size. closes #873
Diffstat (limited to 'contrib/native')
-rw-r--r--contrib/native/client/src/clientlib/drillClientImpl.cpp4
-rw-r--r--contrib/native/client/src/clientlib/errmsgs.cpp2
2 files changed, 3 insertions, 3 deletions
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp b/contrib/native/client/src/clientlib/drillClientImpl.cpp
index 7015b5afa..3f9f958a8 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.cpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp
@@ -2377,7 +2377,7 @@ status_t DrillClientQueryResult::setupColumnDefs(exec::shared::QueryData* pQuery
for(std::vector<Drill::FieldMetadata*>::iterator it = this->m_columnDefs->begin(); it != this->m_columnDefs->end(); ++it){
// the key is the field_name + type
char type[256];
- sprintf(type, ":%d:%d",(*it)->getMinorType(), (*it)->getDataMode() );
+ snprintf(type, sizeof(type), ":%d:%d",(*it)->getMinorType(), (*it)->getDataMode() );
std::string k= (*it)->getName()+type;
oldSchema[k]=*it;
delete *it;
@@ -2394,7 +2394,7 @@ status_t DrillClientQueryResult::setupColumnDefs(exec::shared::QueryData* pQuery
//Look for changes in the vector and trigger a Schema change event if necessary.
//If vectors are different, then call the schema change listener.
char type[256];
- sprintf(type, ":%d:%d",fmd->getMinorType(), fmd->getDataMode() );
+ snprintf(type, sizeof(type), ":%d:%d",fmd->getMinorType(), fmd->getDataMode() );
std::string k= fmd->getName()+type;
std::map<std::string, Drill::FieldMetadata*>::iterator iter=oldSchema.find(k);
if(iter==oldSchema.end()){
diff --git a/contrib/native/client/src/clientlib/errmsgs.cpp b/contrib/native/client/src/clientlib/errmsgs.cpp
index 56510ec80..15d2256fb 100644
--- a/contrib/native/client/src/clientlib/errmsgs.cpp
+++ b/contrib/native/client/src/clientlib/errmsgs.cpp
@@ -77,7 +77,7 @@ std::string getMessage(uint32_t msgId, ...){
assert((ERR_NONE <= msgId) && (msgId < ERR_QRY_MAX));
va_list args;
va_start (args, msgId);
- vsprintf (str, errorMessages[msgId-DRILL_ERR_START].msgFormatStr, args);
+ vsnprintf (str, sizeof(str), errorMessages[msgId-DRILL_ERR_START].msgFormatStr, args);
va_end (args);
s=std::string("[")+boost::lexical_cast<std::string>(msgId)+std::string("]")+str;
return s;