!362 openssl_malloc指针判断

Merge pull request !362 from Jeam.wang/master
This commit is contained in:
openharmony_ci 2023-02-21 01:37:57 +00:00 committed by Gitee
commit 7e1f1bd92b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 42 additions and 22 deletions

View File

@ -18,8 +18,9 @@
#include <cstddef>
#include <curl/curl.h>
#include <pthread.h>
#include "log.h"
static pthread_mutex_t *lockarray;
static pthread_mutex_t *lockArray = nullptr;
#ifdef USE_OPENSSL
#include <openssl/crypto.h>
@ -29,9 +30,9 @@ static void LockCallback(int mode, int type, char *file, int line)
(void)file;
(void)line;
if (mode & CRYPTO_LOCK) {
pthread_mutex_lock(&(lockarray[type]));
pthread_mutex_lock(&(lockArray[type]));
} else {
pthread_mutex_unlock(&(lockarray[type]));
pthread_mutex_unlock(&(lockArray[type]));
}
}
@ -49,9 +50,13 @@ static void InitLocks(void)
LOCK_CALLBACK lockCallback;
threadIdCallback = ThreadIdCallback;
lockCallback = LockCallback;
lockarray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
lockArray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
if (lockArray == nullptr) {
DOWNLOAD_HILOGE("failed to create openssl lock");
return;
}
for (int i = 0; i < CRYPTO_num_locks(); i++) {
pthread_mutex_init(&(lockarray[i]), NULL);
pthread_mutex_init(&(lockArray[i]), NULL);
}
CRYPTO_set_id_callback(threadIdCallback);
CRYPTO_set_locking_callback(lockCallback);
@ -62,9 +67,9 @@ static void KillLocks(void)
int i;
CRYPTO_set_locking_callback(NULL);
for (i = 0; i < CRYPTO_num_locks(); i++) {
pthread_mutex_destroy(&(lockarray[i]));
pthread_mutex_destroy(&(lockArray[i]));
}
OPENSSL_free(lockarray);
OPENSSL_free(lockArray);
}
#endif

View File

@ -52,12 +52,21 @@ void DownloadManager::CallFunctionAsync(napi_env env, napi_ref func, const ArgsG
{
uv_loop_s *loop = nullptr;
napi_get_uv_event_loop(env, &loop);
if (loop == nullptr) {
DOWNLOAD_HILOGE("Failed to get uv event loop");
return;
}
auto *work = new (std::nothrow) uv_work_t;
if (work == nullptr) {
DOWNLOAD_HILOGE("Failed to create uv work");
return;
}
auto *data = new (std::nothrow) CallFunctionData;
if (data == nullptr) {
DOWNLOAD_HILOGE("Failed to create CallFunctionData");
delete work;
return;
}
data->env_ = env;
data->func_ = func;
data->generator_ = generator;

View File

@ -433,7 +433,6 @@ napi_status UploadTaskNapi::GetContext(napi_env env, napi_value *argv, int& para
void UploadTaskNapi::OnSystemSuccess(napi_env env, napi_ref ref, Upload::UploadResponse &response)
{
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "OnSystemSuccess enter");
uv_loop_s *loop_ = nullptr;
napi_get_uv_event_loop(env, &loop_);
if (loop_ == nullptr) {
@ -442,12 +441,12 @@ void UploadTaskNapi::OnSystemSuccess(napi_env env, napi_ref ref, Upload::UploadR
}
uv_work_t *work = new (std::nothrow) uv_work_t;
if (work == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
return;
}
SystemSuccessCallback *successCallback = new (std::nothrow)SystemSuccessCallback;
SystemSuccessCallback *successCallback = new (std::nothrow)SystemSuccessCallback();
if (successCallback == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to create successCallback");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create successCallback");
delete work;
return;
}
@ -486,26 +485,29 @@ void UploadTaskNapi::OnSystemSuccess(napi_env env, napi_ref ref, Upload::UploadR
void UploadTaskNapi::OnSystemFail(napi_env env, napi_ref ref, std::string &data, int32_t &code)
{
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "OnSystemFail enter");
uv_loop_s *loop_ = nullptr;
napi_get_uv_event_loop(env, &loop_);
if (loop_ == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to get uv event loop");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to get uv event loop");
return;
}
uv_work_t *work = new (std::nothrow) uv_work_t;
if (work == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
return;
}
SystemFailCallback *failCallback = new (std::nothrow) SystemFailCallback();
if (failCallback == nullptr) {
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create fail callback");
delete work;
return;
}
SystemFailCallback *failCallback = new (std::nothrow) SystemFailCallback;
failCallback->data = data;
failCallback->code = code;
failCallback->env = env;
failCallback->ref = ref;
work->data = (void *)failCallback;
int ret = uv_queue_work(loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
int ret = uv_queue_work(loop_, work, [](uv_work_t *work) {}, [](uv_work_t *work, int status) {
SystemFailCallback *failCallback = reinterpret_cast<SystemFailCallback *>(work->data);
napi_handle_scope scope = nullptr;
napi_open_handle_scope(failCallback->env, &scope);
@ -535,19 +537,23 @@ void UploadTaskNapi::OnSystemFail(napi_env env, napi_ref ref, std::string &data,
void UploadTaskNapi::OnSystemComplete(napi_env env, napi_ref ref)
{
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "OnSystemComplete enter");
uv_loop_s *loop_ = nullptr;
napi_get_uv_event_loop(env, &loop_);
if (loop_ == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to get uv event loop");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to get uv event loop");
return;
}
uv_work_t *work = new (std::nothrow) uv_work_t;
if (work == nullptr) {
UPLOAD_HILOGD(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create uv work");
return;
}
SystemCompleteCallback *completeCallback = new (std::nothrow)SystemCompleteCallback();
if (completeCallback == nullptr) {
UPLOAD_HILOGE(UPLOAD_MODULE_JS_NAPI, "Failed to create complete callback");
delete work;
return;
}
SystemCompleteCallback *completeCallback = new (std::nothrow)SystemCompleteCallback;
completeCallback->env = env;
completeCallback->ref = ref;
work->data = (void *)completeCallback;