diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp
index ee74b4c7b70bfa584e888a13402f6395ded7fc16..cf14205950e5da00811eb0ba37056d4f0c314ce9 100644
--- a/receiver/src/request.cpp
+++ b/receiver/src/request.cpp
@@ -42,7 +42,7 @@ Error Request::ReceiveMetaData() {
     if (err) {
         return err;
     }
-    metadata_.assign((char*)buf.get());
+    metadata_.assign((char*)buf.get(),request_header_.meta_size);
     return nullptr;
 }
 
diff --git a/receiver/unittests/test_request.cpp b/receiver/unittests/test_request.cpp
index 23e3eec4c9576e8ed4bf378241c837b69ab39882..fc400799c98c1e684a3859997f948882f3a5dfb0 100644
--- a/receiver/unittests/test_request.cpp
+++ b/receiver/unittests/test_request.cpp
@@ -104,8 +104,8 @@ class RequestTests : public Test {
 };
 
 ACTION_P(CopyStr,value) {
-    if (value.size()<=arg2) {
-        strcpy(static_cast<char*>(arg1), value.c_str());
+    if (value.size()<=arg2 && value.size()>0) {
+        memcpy(static_cast<char*>(arg1), value.c_str(),value.size());
     }
 }