diff options
-rw-r--r-- | dt_fd_forward/Android.bp | 1 | ||||
-rw-r--r-- | dt_fd_forward/dt_fd_forward.cc | 4 | ||||
-rw-r--r-- | openjdkjvmti/ti_logging.cc | 7 |
3 files changed, 8 insertions, 4 deletions
diff --git a/dt_fd_forward/Android.bp b/dt_fd_forward/Android.bp index 1ba2323a15..2a2aa188bb 100644 --- a/dt_fd_forward/Android.bp +++ b/dt_fd_forward/Android.bp @@ -41,6 +41,7 @@ cc_defaults { header_libs: [ "javavm_headers", "dt_fd_forward_export", + "art_libartbase_headers", // For strlcpy emulation. ], multilib: { lib32: { diff --git a/dt_fd_forward/dt_fd_forward.cc b/dt_fd_forward/dt_fd_forward.cc index a99f7850c0..d5b6de5ead 100644 --- a/dt_fd_forward/dt_fd_forward.cc +++ b/dt_fd_forward/dt_fd_forward.cc @@ -50,6 +50,8 @@ #include <jni.h> #include <jdwpTransport.h> +#include <base/strlcpy.h> + namespace dt_fd_forward { // Helper that puts line-number in error message. @@ -651,7 +653,7 @@ void FdForwardTransport::Free(void* data) { jdwpTransportError FdForwardTransport::GetLastError(/*out*/char** err) { std::string data = global_last_error_; *err = reinterpret_cast<char*>(Alloc(data.size() + 1)); - strcpy(*err, data.c_str()); + strlcpy(*err, data.c_str(), data.size() + 1); return OK; } diff --git a/openjdkjvmti/ti_logging.cc b/openjdkjvmti/ti_logging.cc index 1d24d3b6b6..60f4340fc7 100644 --- a/openjdkjvmti/ti_logging.cc +++ b/openjdkjvmti/ti_logging.cc @@ -34,6 +34,7 @@ #include "art_jvmti.h" #include "base/mutex.h" +#include "base/strlcpy.h" #include "thread-current-inl.h" namespace openjdkjvmti { @@ -47,13 +48,13 @@ jvmtiError LogUtil::GetLastError(jvmtiEnv* env, char** data) { if (tienv->last_error_.empty()) { return ERR(ABSENT_INFORMATION); } + const size_t size = tienv->last_error_.size() + 1; char* out; - jvmtiError err = tienv->Allocate(tienv->last_error_.size() + 1, - reinterpret_cast<unsigned char**>(&out)); + jvmtiError err = tienv->Allocate(size, reinterpret_cast<unsigned char**>(&out)); if (err != OK) { return err; } - strcpy(out, tienv->last_error_.c_str()); + strlcpy(out, tienv->last_error_.c_str(), size); *data = out; return OK; } |