diff --git a/process/js_childprocess.cpp b/process/js_childprocess.cpp index 9403527..f76197a 100644 --- a/process/js_childprocess.cpp +++ b/process/js_childprocess.cpp @@ -228,7 +228,7 @@ namespace OHOS::Js_sys_module::Process { stdErrInfo_->isNeedRun = &isNeedRun_; stdErrInfo_->fd = stdErrFd_[0]; stdErrInfo_->pid = optionsInfo_->pid; - stdErrInfo_->maxBuffSize = static_cast(optionsInfo_->maxBuffer); + stdErrInfo_->maxBuffSize = optionsInfo_->maxBuffer; napi_create_string_utf8(env_, "ReadStdErr", NAPI_AUTO_LENGTH, &resourceName); napi_create_async_work(env_, nullptr, resourceName, ReadStdErr, EndStdErr, reinterpret_cast(stdErrInfo_), &stdErrInfo_->worker); @@ -243,8 +243,8 @@ namespace OHOS::Js_sys_module::Process { return; } while (*(stdOutInfo->isNeedRun)) { - read(stdOutInfo->fd, childStdout, sizeof(childStdout) - 1); - if (strlen(childStdout) > 0) { + auto readSize = read(stdOutInfo->fd, childStdout, sizeof(childStdout) - 1); + if (readSize >= 0) { stdOutInfo->stdData += childStdout; } if (stdOutInfo->stdData.size() > stdOutInfo->maxBuffSize && *(stdOutInfo->isNeedRun)) { @@ -277,8 +277,8 @@ namespace OHOS::Js_sys_module::Process { return; } while (*(stdErrInfo->isNeedRun)) { - read(stdErrInfo->fd, childStderr, sizeof(childStderr) - 1); - if (strlen(childStderr) > 0) { + auto readSize = read(stdErrInfo->fd, childStderr, sizeof(childStderr) - 1); + if (readSize >= 0) { stdErrInfo->stdData += childStderr; } if (stdErrInfo->stdData.size() > stdErrInfo->maxBuffSize && *(stdErrInfo->isNeedRun)) { diff --git a/process/js_childprocess.h b/process/js_childprocess.h index fa9c7b9..afc1ce5 100644 --- a/process/js_childprocess.h +++ b/process/js_childprocess.h @@ -34,7 +34,7 @@ namespace OHOS::Js_sys_module::Process { napi_value promise = nullptr; std::string stdData = ""; bool *isNeedRun = nullptr; - size_t maxBuffSize; + int64_t maxBuffSize; int fd = 0; int pid = 0; }; diff --git a/process/js_process.cpp b/process/js_process.cpp index a44dc2d..62eb6bb 100644 --- a/process/js_process.cpp +++ b/process/js_process.cpp @@ -210,7 +210,7 @@ namespace OHOS::Js_sys_module::Process { void Process::Abort() const { - abort(); + exit(0); } void Process::On(napi_value str, napi_value function) @@ -250,10 +250,14 @@ namespace OHOS::Js_sys_module::Process { size_t bufferSize = 0; bool flag = false; NAPI_CALL(env_, napi_get_value_string_utf8(env_, str, buffer, 0, &bufferSize)); - if (bufferSize > 0) { - buffer = new char[bufferSize + 1]; + NAPI_ASSERT(env_, bufferSize > 0, "bufferSize == 0"); + buffer = new char[bufferSize + 1]; + if (memset_s(buffer, bufferSize + 1, 0, bufferSize + 1) != 0) { + HILOG_ERROR("buffer memset error"); + delete []buffer; + return nullptr; } - NAPI_CALL(env_, napi_get_value_string_utf8(env_, str, buffer, bufferSize + 1, &bufferSize)); + napi_get_value_string_utf8(env_, str, buffer, bufferSize + 1, &bufferSize); std::string temp = ""; if (buffer != nullptr) { temp = buffer; @@ -330,8 +334,9 @@ namespace OHOS::Js_sys_module::Process { napi_value Process::GetEnvironmentVar(napi_value name) const { char *buffer = nullptr; - char *envvar = nullptr; napi_value result = nullptr; + char buf[260 * NUM_OF_DATA] = { 0 }; // 260:Only numbers path String size is 260. + size_t length = sizeof(buf); size_t bufferSize = 0; napi_get_value_string_utf8(env_, name, buffer, 0, &bufferSize); if (bufferSize > 0) { @@ -344,12 +349,12 @@ namespace OHOS::Js_sys_module::Process { delete []buffer; buffer = nullptr; } - envvar = getenv(temp.c_str()); - if (envvar == nullptr) { + auto envNum = uv_os_getenv(temp.c_str(), buf, &length); + if (envNum == UV_ENOENT) { NAPI_CALL(env_, napi_get_undefined(env_, &result)); return result; } - napi_create_string_utf8(env_, envvar, strlen(envvar), &result); + napi_create_string_utf8(env_, buf, strlen(buf), &result); return result; }