summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2018-11-19 11:52:24 -0800
committer Andreas Gampe <agampe@google.com> 2018-11-20 13:04:36 -0800
commita8f91395f9a2ee9d975a83178abaac9af34969ab (patch)
tree426b52d77898b6a3cd34b0f1b0a431343e92e2be
parent2a487eb89b67d7ff030368e4e4a6ed0a3ac39003 (diff)
ART: Fix clang-analyzer-security.insecureAPI.strcpy
Bug: 32619234 Test: m test-art-host Change-Id: I08ef95679230be1cfd23037c15714e2720be358f
-rw-r--r--dt_fd_forward/Android.bp1
-rw-r--r--dt_fd_forward/dt_fd_forward.cc4
-rw-r--r--openjdkjvmti/ti_logging.cc7
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;
}