From 6fd1390859b694d593c6d68b3ebb5cddb8d0b785 Mon Sep 17 00:00:00 2001 From: chen Date: Thu, 5 Sep 2024 17:16:02 +0800 Subject: [PATCH] fix filename use-after-free bug Signed-off-by: chen Change-Id: I037b1225b374018ad4e61635627025930e8ba058 --- src/js_native_api_v8.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index cdca177fa..747f18ba4 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -1626,16 +1626,16 @@ v8::MaybeLocal PrepareStackTraceCallback( auto resultFunc = v8::Local::Cast(result); v8::Local element = trace->Get(context, 0).ToLocalChecked(); - char *fileName = nullptr; + std::string fileName = ""; if (element->IsObject()) { auto obj = element->ToObject(context); auto getFileName = v8::String::NewFromUtf8(isolate, "getFileName", v8::NewStringType::kNormal); auto function = obj.ToLocalChecked()->Get(context, getFileName.ToLocalChecked()).ToLocalChecked(); auto lineNumberFunction = v8::Local::Cast(function); auto fileNameObj = lineNumberFunction->Call(context, obj.ToLocalChecked(), 0, {}); - fileName = *v8::String::Utf8Value(isolate, fileNameObj.ToLocalChecked()); + fileName = std::string(*v8::String::Utf8Value(isolate, fileNameObj.ToLocalChecked())); } - auto &&sourceMapUrl = fileName ? v8impl::GetSourceMapFromFileName(fileName) : ""; + auto &&sourceMapUrl = (!fileName.empty()) ? v8impl::GetSourceMapFromFileName(std::move(fileName)) : ""; std::ifstream sourceMapfile(sourceMapUrl); std::string content = ""; if (sourceMapfile.good()) { -- Gitee