memcpy copies invalid memory that has not yet been initialized.
So this fix is the correct size when using memcpy.
---
 src/log/logd/lgs_dest.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/log/logd/lgs_dest.cc b/src/log/logd/lgs_dest.cc
index 943de15ea..74822c25b 100644
--- a/src/log/logd/lgs_dest.cc
+++ b/src/log/logd/lgs_dest.cc
@@ -199,14 +199,16 @@ void DestinationHandler::FormCfgDestMsg(const 
std::string& dest,
   if (tmp.size() > 1) {
     strncpy(msg->type, tmp[kType].c_str(), kMaxChar - 1);
   }
-  if (tmp.size() == kSize) memcpy(msg->value, tmp[kValue].c_str(), kMaxChar);
+  if (tmp.size() == kSize) {
+    memcpy(msg->value, tmp[kValue].c_str(), tmp[kValue].length() + 1);
+  }
 }
 
 void DestinationHandler::FormDelDestMsg(const std::string& dest,
                                         DelDestMsg* msg) {
   osafassert(msg != nullptr);
   const VectorString tmp = logutil::Parser(dest, kDelimeter);
-  memcpy(msg->name, tmp[kName].c_str(), kMaxChar);
+  memcpy(msg->name, tmp[kName].c_str(), tmp[kName].length() + 1);
 }
 
 bool DestinationHandler::VectorFind(const VectorString& vec,
-- 
2.38.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to