diff options
author | Laurent Goujon <laurent@dremio.com> | 2017-07-11 22:25:44 -0700 |
---|---|---|
committer | Laurent Goujon <laurent@dremio.com> | 2017-07-12 10:57:27 -0700 |
commit | 35d07c3bd84ee8e8a4019a18888461e130c45d42 (patch) | |
tree | 54488bd3d861b04df9a007ed4943eea6d8f1fd0f /contrib/native/client | |
parent | 35a1ec66726fc5a77ea61cac3b6f3bbc33b8564a (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/client')
-rw-r--r-- | contrib/native/client/src/clientlib/drillClientImpl.cpp | 4 | ||||
-rw-r--r-- | contrib/native/client/src/clientlib/errmsgs.cpp | 2 |
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; |