summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Ni <yangni@google.com>2016-06-27 16:12:25 -0700
committerYang Ni <yangni@google.com>2016-06-27 16:36:20 -0700
commit578419f77342870cb34fe689ec2dd558fa394ded (patch)
tree1f1fd60eb782af68e281bbc8f25da3dc3093b95c
parent3e647a63cb9b9a70d967643d86c711b530fb4e73 (diff)
downloadrs-578419f77342870cb34fe689ec2dd558fa394ded.tar.gz
Fixed unsafe use of stringstream.str()
Bug: 29772332 Fixed code making reference to internal data of a temporary object. Change-Id: I940cce17cd5ada4bb33fa63fde8a63a9038778a8
-rw-r--r--cpu_ref/rsCpuScript.cpp3
-rw-r--r--cpu_ref/rsCpuScriptGroup2.cpp7
-rw-r--r--rsScriptC.cpp3
3 files changed, 8 insertions, 5 deletions
diff --git a/cpu_ref/rsCpuScript.cpp b/cpu_ref/rsCpuScript.cpp
index 582b3424..d9f94121 100644
--- a/cpu_ref/rsCpuScript.cpp
+++ b/cpu_ref/rsCpuScript.cpp
@@ -382,7 +382,8 @@ bool RsdCpuScriptImpl::init(char const *resName, char const *cacheDir,
compileArguments.push_back("-build-checksum");
std::stringstream ss;
ss << std::hex << mBuildChecksum;
- compileArguments.push_back(ss.str().c_str());
+ std::string checksumStr(ss.str());
+ compileArguments.push_back(checksumStr.c_str());
compileArguments.push_back(nullptr);
if (!is_force_recompile() && !useRSDebugContext) {
diff --git a/cpu_ref/rsCpuScriptGroup2.cpp b/cpu_ref/rsCpuScriptGroup2.cpp
index c784ce37..2382cd63 100644
--- a/cpu_ref/rsCpuScriptGroup2.cpp
+++ b/cpu_ref/rsCpuScriptGroup2.cpp
@@ -181,7 +181,8 @@ CpuScriptGroup2Impl::CpuScriptGroup2Impl(RsdCpuReferenceImpl *cpuRefImpl,
mBatches.push_back(batch);
std::stringstream ss;
ss << "Batch" << ++i;
- batch = new Batch(this, ss.str().c_str());
+ std::string batchStr(ss.str());
+ batch = new Batch(this, batchStr.c_str());
}
batch->mClosures.push_back(cc);
@@ -416,7 +417,7 @@ void CpuScriptGroup2Impl::compile(const char* cacheDir) {
std::stringstream ss;
ss << std::hex << checksum;
- const char* checksumStr = ss.str().c_str();
+ std::string checksumStr(ss.str());
//===--------------------------------------------------------------------===//
// Try to load a shared lib from code cache matching filename and checksum
@@ -466,7 +467,7 @@ void CpuScriptGroup2Impl::compile(const char* cacheDir) {
//===--------------------------------------------------------------------===//
arguments.push_back("-build-checksum");
- arguments.push_back(checksumStr);
+ arguments.push_back(checksumStr.c_str());
arguments.push_back(nullptr);
bool compiled = rsuExecuteCommand(RsdCpuScriptImpl::BCC_EXE_PATH,
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index fb808a6f..b4d364ff 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -197,7 +197,8 @@ void ScriptC::runForEach(Context *rsc,
if (ATRACE_ENABLED()) {
ss << "runForEach slot[" << slot << "]";
}
- ATRACE_NAME(ss.str().c_str());
+ std::string msgStr(ss.str());
+ ATRACE_NAME(msgStr.c_str());
if (mRSC->hadFatalError()) return;