diff options
author | Yang Ni <yangni@google.com> | 2016-06-27 16:12:25 -0700 |
---|---|---|
committer | Yang Ni <yangni@google.com> | 2016-06-27 16:36:20 -0700 |
commit | 578419f77342870cb34fe689ec2dd558fa394ded (patch) | |
tree | 1f1fd60eb782af68e281bbc8f25da3dc3093b95c | |
parent | 3e647a63cb9b9a70d967643d86c711b530fb4e73 (diff) | |
download | rs-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.cpp | 3 | ||||
-rw-r--r-- | cpu_ref/rsCpuScriptGroup2.cpp | 7 | ||||
-rw-r--r-- | rsScriptC.cpp | 3 |
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; |