提交 411197d9 编写于 作者: L lishengming14

napi中处理数据argv数组使用时使用了魔数,进行修改

Signed-off-by: Nlishengming14 <lishengming14@huawei.com>
上级 1d3db610
......@@ -143,10 +143,10 @@ napi_value NAPI_IPCSkeleton_flushCommands(napi_env env, napi_callback_info info)
NAPI_ASSERT(env, argc == 1, "requires 1 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 1");
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, argv[0]);
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, argv[ARGV_INDEX_0]);
int32_t result = IPCSkeleton::FlushCommands(target);
napi_value napiValue = nullptr;
NAPI_CALL(env, napi_create_int32(env, result, &napiValue));
......@@ -166,13 +166,13 @@ napi_value NAPI_IPCSkeleton_flushCmdBuffer(napi_env env, napi_callback_info info
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_object) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, argv[0]);
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, argv[ARGV_INDEX_0]);
IPCSkeleton::FlushCommands(target);
napi_value napiValue = nullptr;
napi_get_undefined(env, &napiValue);
......@@ -288,15 +288,15 @@ napi_value NAPI_IPCSkeleton_setCallingIdentity(napi_env env, napi_callback_info
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT_BASE(env, argc == expectedArgc, "requires 1 parameters", retValue);
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT_BASE(env, valueType == napi_string, "type mismatch for parameter 1", retValue);
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
NAPI_ASSERT_BASE(env, bufferSize < maxLen, "string length too large", retValue);
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[0], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], stringValue, bufferSize + 1, &jsStringLength);
NAPI_ASSERT_BASE(env, jsStringLength == bufferSize, "string length wrong", retValue);
std::string identity = stringValue;
......
......@@ -22,7 +22,9 @@
namespace OHOS {
static constexpr OHOS::HiviewDFX::HiLogLabel LOG_LABEL = { LOG_CORE, LOG_ID_IPC, "NapiMessageOption" };
static const size_t ARGV_INDEX_0 = 0;
static const size_t ARGV_INDEX_1 = 1;
/*
* Get flags field from ohos.rpc.MessageOption.
*/
......@@ -52,10 +54,10 @@ static napi_value NapiOhosRpcMessageOptionSetFlags(napi_env env, napi_callback_i
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, thisVar != nullptr, "failed to get js message option object");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
int32_t flags = 0;
napi_status status = napi_get_value_int32(env, argv[0], &flags);
napi_status status = napi_get_value_int32(env, argv[ARGV_INDEX_0], &flags);
NAPI_ASSERT(env, status == napi_ok, "failed to get int32 value");
MessageOption *option = nullptr;
napi_unwrap(env, thisVar, (void **)&option);
......@@ -95,10 +97,10 @@ static napi_value NapiOhosRpcMessageOptionSetAsync(napi_env env, napi_callback_i
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, thisVar != nullptr, "failed to get js message option object");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_boolean, "type mismatch for parameter 1");
bool flags = false;
napi_status status = napi_get_value_bool(env, argv[0], &flags);
napi_status status = napi_get_value_bool(env, argv[ARGV_INDEX_0], &flags);
NAPI_ASSERT(env, status == napi_ok, "failed to get boolean value");
MessageOption *option = nullptr;
napi_unwrap(env, thisVar, (void **)&option);
......@@ -138,10 +140,10 @@ static napi_value NapiOhosRpcMessageOptionSetWaittime(napi_env env, napi_callbac
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, thisVar != nullptr, "failed to get js message option object");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
int32_t waittime = 0;
napi_status status = napi_get_value_int32(env, argv[0], &waittime);
napi_status status = napi_get_value_int32(env, argv[ARGV_INDEX_0], &waittime);
NAPI_ASSERT(env, status == napi_ok, "failed to get int32 value");
MessageOption *option = nullptr;
napi_unwrap(env, thisVar, (void **)&option);
......@@ -166,28 +168,28 @@ static napi_value NAPIMessageOption_JS_Constructor(napi_env env, napi_callback_i
waittime = MessageOption::TF_WAIT_TIME;
} else if (argc == 1) {
napi_valuetype valueType;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number || valueType == napi_boolean, "type mismatch for parameter 1");
if (valueType == napi_boolean) {
bool jsBoolFlags = false;
napi_get_value_bool(env, argv[0], &jsBoolFlags);
napi_get_value_bool(env, argv[ARGV_INDEX_0], &jsBoolFlags);
flags = jsBoolFlags ? MessageOption::TF_ASYNC : MessageOption::TF_SYNC;
} else {
int32_t jsFlags = 0;
napi_get_value_int32(env, argv[0], &jsFlags);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &jsFlags);
flags = jsFlags == 0 ? MessageOption::TF_SYNC : MessageOption::TF_ASYNC;
}
waittime = MessageOption::TF_WAIT_TIME;
} else {
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
int32_t jsFlags = 0;
napi_get_value_int32(env, argv[0], &jsFlags);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &jsFlags);
int32_t jsWaittime = 0;
napi_get_value_int32(env, argv[1], &jsWaittime);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &jsWaittime);
flags = jsFlags == 0 ? MessageOption::TF_SYNC : MessageOption::TF_ASYNC;
waittime = jsWaittime;
}
......
......@@ -41,6 +41,7 @@ static const size_t ARGV_INDEX_0 = 0;
static const size_t ARGV_INDEX_1 = 1;
static const size_t ARGV_INDEX_2 = 2;
static const size_t ARGV_INDEX_3 = 3;
static const size_t ARGV_INDEX_4 = 4;
void ExecuteSendRequest(napi_env env, void *data)
{
......@@ -122,11 +123,11 @@ napi_value SendRequestAsync(napi_env env, sptr<IRemoteObject> target, uint32_t c
StartAsyncTrace(HITRACE_TAG_RPC, (sendRequestParam->traceValue).c_str(), sendRequestParam->traceId);
}
}
napi_create_reference(env, argv[0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[4], 1, &sendRequestParam->callback);
napi_create_reference(env, argv[ARGV_INDEX_0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[ARGV_INDEX_1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[ARGV_INDEX_2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[ARGV_INDEX_3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[ARGV_INDEX_4], 1, &sendRequestParam->callback);
napi_value resourceName = nullptr;
NAPI_CALL(env, napi_create_string_utf8(env, __func__, NAPI_AUTO_LENGTH, &resourceName));
NAPI_CALL(env, napi_create_async_work(env, nullptr, resourceName, ExecuteSendRequest,
......@@ -169,10 +170,10 @@ napi_value SendRequestPromise(napi_env env, sptr<IRemoteObject> target, uint32_t
StartAsyncTrace(HITRACE_TAG_RPC, (sendRequestParam->traceValue).c_str(), sendRequestParam->traceId);
}
}
napi_create_reference(env, argv[0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[ARGV_INDEX_0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[ARGV_INDEX_1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[ARGV_INDEX_2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[ARGV_INDEX_3], 1, &sendRequestParam->jsOptionRef);
napi_value resourceName = nullptr;
NAPI_CALL(env, napi_create_string_utf8(env, __func__, NAPI_AUTO_LENGTH, &resourceName));
NAPI_CALL(env, napi_create_async_work(env, nullptr, resourceName, ExecuteSendRequest,
......@@ -191,26 +192,26 @@ napi_value NAPI_RemoteProxy_sendRequest(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == argcPromise || argc == argcCallback, "requires 4 or 5 parameters");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 2");
napi_typeof(env, argv[2], &valueType);
napi_typeof(env, argv[ARGV_INDEX_2], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 3");
napi_typeof(env, argv[3], &valueType);
napi_typeof(env, argv[ARGV_INDEX_3], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 4");
NAPI_MessageParcel *data = nullptr;
napi_status status = napi_unwrap(env, argv[1], (void **)&data);
napi_status status = napi_unwrap(env, argv[ARGV_INDEX_1], (void **)&data);
NAPI_ASSERT(env, status == napi_ok, "failed to get data message parcel");
NAPI_MessageParcel *reply = nullptr;
status = napi_unwrap(env, argv[2], (void **)&reply);
status = napi_unwrap(env, argv[ARGV_INDEX_2], (void **)&reply);
NAPI_ASSERT(env, status == napi_ok, "failed to get reply message parcel");
MessageOption *option = nullptr;
status = napi_unwrap(env, argv[3], (void **)&option);
status = napi_unwrap(env, argv[ARGV_INDEX_3], (void **)&option);
NAPI_ASSERT(env, status == napi_ok, "failed to get message option");
int32_t code = 0;
napi_get_value_int32(env, argv[0], &code);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &code);
NAPIRemoteProxyHolder *proxyHolder = nullptr;
napi_unwrap(env, thisVar, (void **)&proxyHolder);
......@@ -298,7 +299,7 @@ napi_value NAPI_RemoteProxy_sendMessageRequest(napi_env env, napi_callback_info
return checkArgsResult;
}
int32_t code = 0;
napi_get_value_int32(env, argv[0], &code);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &code);
napi_value result = nullptr;
napi_get_undefined(env, &result);
......@@ -350,15 +351,15 @@ napi_value NAPI_RemoteProxy_addDeathRecipient(napi_env env, napi_callback_info i
napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
NAPI_ASSERT(env, argc == expectedArgc, "requires 2 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
int32_t flag = 0;
napi_get_value_int32(env, argv[1], &flag);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &flag);
napi_value result;
if (argv[0] == nullptr) {
if (argv[ARGV_INDEX_0] == nullptr) {
napi_get_boolean(env, false, &result);
return result;
}
......@@ -377,7 +378,7 @@ napi_value NAPI_RemoteProxy_addDeathRecipient(napi_env env, napi_callback_info i
return result;
}
sptr<NAPIDeathRecipient> nativeRecipient = new NAPIDeathRecipient(env, argv[0]);
sptr<NAPIDeathRecipient> nativeRecipient = new NAPIDeathRecipient(env, argv[ARGV_INDEX_0]);
if (target->AddDeathRecipient(nativeRecipient)) {
NAPIDeathRecipientList *list = proxyHolder->list_;
if (list->Add(nativeRecipient)) {
......@@ -426,9 +427,9 @@ napi_value NAPI_RemoteProxy_registerDeathRecipient(napi_env env, napi_callback_i
return checkArgsResult;
}
int32_t flag = 0;
napi_get_value_int32(env, argv[1], &flag);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &flag);
if (argv[0] == nullptr) {
if (argv[ARGV_INDEX_0] == nullptr) {
ZLOGE(LOG_LABEL, "invalid parameter 1");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
......@@ -449,7 +450,7 @@ napi_value NAPI_RemoteProxy_registerDeathRecipient(napi_env env, napi_callback_i
return napiErr.ThrowError(env, errorDesc::PROXY_OR_REMOTE_OBJECT_INVALID_ERROR);
}
sptr<NAPIDeathRecipient> nativeRecipient = new NAPIDeathRecipient(env, argv[0]);
sptr<NAPIDeathRecipient> nativeRecipient = new NAPIDeathRecipient(env, argv[ARGV_INDEX_0]);
if (target->AddDeathRecipient(nativeRecipient)) {
NAPIDeathRecipientList *list = proxyHolder->list_;
if (list->Add(nativeRecipient)) {
......@@ -472,17 +473,17 @@ napi_value NAPI_RemoteProxy_removeDeathRecipient(napi_env env, napi_callback_inf
napi_get_cb_info(env, info, &argc, argv, &thisVar, &data);
NAPI_ASSERT(env, argc == expectedArgc, "requires 2 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
napi_value result;
if (argv[0] == nullptr) {
if (argv[ARGV_INDEX_0] == nullptr) {
napi_get_boolean(env, false, &result);
return result;
}
int32_t flag = 0;
napi_get_value_int32(env, argv[1], &flag);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &flag);
NAPIRemoteProxyHolder *proxyHolder = nullptr;
napi_status status = napi_unwrap(env, thisVar, (void **)&proxyHolder);
......@@ -498,7 +499,7 @@ napi_value NAPI_RemoteProxy_removeDeathRecipient(napi_env env, napi_callback_inf
return result;
}
sptr<NAPIDeathRecipientList> list = proxyHolder->list_;
sptr<NAPIDeathRecipient> nativeRecipient = list->Find(argv[0]);
sptr<NAPIDeathRecipient> nativeRecipient = list->Find(argv[ARGV_INDEX_0]);
if (nativeRecipient == nullptr) {
ZLOGE(LOG_LABEL, "recipient not found");
napi_get_boolean(env, false, &result);
......@@ -554,7 +555,7 @@ napi_value NAPI_RemoteProxy_unregisterDeathRecipient(napi_env env, napi_callback
return checkArgsResult;
}
int32_t flag = 0;
napi_get_value_int32(env, argv[1], &flag);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &flag);
NAPIRemoteProxyHolder *proxyHolder = nullptr;
napi_status status = napi_unwrap(env, thisVar, (void **)&proxyHolder);
......@@ -574,7 +575,7 @@ napi_value NAPI_RemoteProxy_unregisterDeathRecipient(napi_env env, napi_callback
napi_value result = nullptr;
napi_get_undefined(env, &result);
sptr<NAPIDeathRecipientList> list = proxyHolder->list_;
sptr<NAPIDeathRecipient> nativeRecipient = list->Find(argv[0]);
sptr<NAPIDeathRecipient> nativeRecipient = list->Find(argv[ARGV_INDEX_0]);
if (nativeRecipient == nullptr) {
ZLOGE(LOG_LABEL, "recipient not found");
return result;
......
......@@ -29,6 +29,10 @@ constexpr size_t BYTE_SIZE_32 = 4;
NapiError NAPIAshmem::napiErr;
static const size_t ARGV_INDEX_0 = 0;
static const size_t ARGV_INDEX_1 = 1;
static const size_t ARGV_INDEX_2 = 2;
NAPIAshmem::NAPIAshmem(sptr<Ashmem> &ashmem) : ashmem_(ashmem)
{
if (ashmem == nullptr) {
......@@ -57,24 +61,24 @@ napi_value NAPIAshmem::CreateAshmem(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == 2, "requires 2 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_string) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return nullptr;
}
size_t bufferSize = 0;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
if (bufferSize == 0) {
ZLOGE(LOG_LABEL, "invalid ashmem name");
return nullptr;
}
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 2");
return nullptr;
}
int32_t ashmemSize = 0;
napi_get_value_int32(env, argv[1], &ashmemSize);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &ashmemSize);
if (ashmemSize <= 0) {
ZLOGE(LOG_LABEL, "invalid ashmem size");
return nullptr;
......@@ -104,10 +108,10 @@ napi_value NAPIAshmem::CreateAshmemFromExisting(napi_env env, napi_callback_info
status = napi_get_named_property(env, global, "AshmemConstructor_", &constructor);
NAPI_ASSERT(env, status == napi_ok, "get Ashmem constructor failed");
bool isAshmem = false;
napi_instanceof(env, argv[0], constructor, &isAshmem);
napi_instanceof(env, argv[ARGV_INDEX_0], constructor, &isAshmem);
NAPI_ASSERT(env, isAshmem == true, "parameter is not instanceof Ashmem");
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, argv[0], (void **)&napiAshmem);
napi_unwrap(env, argv[ARGV_INDEX_0], (void **)&napiAshmem);
NAPI_ASSERT(env, napiAshmem != nullptr, "napiAshmem is null");
int32_t fd = napiAshmem->GetAshmem()->GetAshmemFd();
uint32_t size = (uint32_t)(napiAshmem->GetAshmem()->GetAshmemSize());
......@@ -142,26 +146,26 @@ napi_value NAPIAshmem::Create(napi_env env, napi_callback_info info)
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_string) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
size_t bufferSize = 0;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
if (bufferSize == 0) {
ZLOGE(LOG_LABEL, "invalid ashmem name");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 2");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
int32_t ashmemSize = 0;
napi_get_value_int32(env, argv[1], &ashmemSize);
napi_get_value_int32(env, argv[ARGV_INDEX_1], &ashmemSize);
if (ashmemSize <= 0) {
ZLOGE(LOG_LABEL, "invalid ashmem size");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
......@@ -211,13 +215,13 @@ napi_value NAPIAshmem::GetAshmemFromExisting(napi_env env, napi_callback_info in
return nullptr;
}
bool isAshmem = false;
napi_instanceof(env, argv[0], constructor, &isAshmem);
napi_instanceof(env, argv[ARGV_INDEX_0], constructor, &isAshmem);
if (isAshmem == false) {
ZLOGE(LOG_LABEL, "parameter is not instanceof Ashmem");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, argv[0], (void **)&napiAshmem);
napi_unwrap(env, argv[ARGV_INDEX_0], (void **)&napiAshmem);
if (napiAshmem == nullptr) {
ZLOGE(LOG_LABEL, "napiAshmem is null");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
......@@ -277,10 +281,10 @@ napi_value NAPIAshmem::MapAshmem(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == 1, "requires 1 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
uint32_t mapType = 0;
napi_get_value_uint32(env, argv[0], &mapType);
napi_get_value_uint32(env, argv[ARGV_INDEX_0], &mapType);
NAPI_ASSERT(env, mapType <= MMAP_PROT_MAX, "napiAshmem mapType error");
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
......@@ -302,13 +306,13 @@ napi_value NAPIAshmem::MapTypedAshmem(napi_env env, napi_callback_info info)
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
uint32_t mapType = 0;
napi_get_value_uint32(env, argv[0], &mapType);
napi_get_value_uint32(env, argv[ARGV_INDEX_0], &mapType);
if (mapType > MMAP_PROT_MAX) {
ZLOGE(LOG_LABEL, "napiAshmem mapType error");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
......@@ -391,14 +395,14 @@ napi_value NAPIAshmem::ReadFromAshmem(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == 2, "requires 2 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
int64_t size = 0;
napi_get_value_int64(env, argv[0], &size);
napi_get_value_int64(env, argv[ARGV_INDEX_0], &size);
int64_t offset = 0;
napi_get_value_int64(env, argv[1], &offset);
napi_get_value_int64(env, argv[ARGV_INDEX_1], &offset);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
NAPI_ASSERT(env, napiAshmem != nullptr, "napiAshmem is null");
......@@ -446,20 +450,20 @@ napi_value NAPIAshmem::ReadAshmem(napi_env env, napi_callback_info info)
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 2");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
int64_t size = 0;
napi_get_value_int64(env, argv[0], &size);
napi_get_value_int64(env, argv[ARGV_INDEX_0], &size);
int64_t offset = 0;
napi_get_value_int64(env, argv[1], &offset);
napi_get_value_int64(env, argv[ARGV_INDEX_1], &offset);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
if (napiAshmem == nullptr) {
......@@ -517,10 +521,10 @@ napi_value NAPIAshmem::SetProtection(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == 1, "requires 1 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
uint32_t protectionType = 0;
napi_get_value_uint32(env, argv[0], &protectionType);
napi_get_value_uint32(env, argv[ARGV_INDEX_0], &protectionType);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
NAPI_ASSERT(env, napiAshmem != nullptr, "napiAshmem is null");
......@@ -542,13 +546,13 @@ napi_value NAPIAshmem::SetProtectionType(napi_env env, napi_callback_info info)
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
uint32_t protectionType = 0;
napi_get_value_uint32(env, argv[0], &protectionType);
napi_get_value_uint32(env, argv[ARGV_INDEX_0], &protectionType);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
if (napiAshmem == nullptr) {
......@@ -582,25 +586,25 @@ napi_value NAPIAshmem::WriteToAshmem(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == 3, "requires 1 parameter");
bool isArray = false;
napi_is_array(env, argv[0], &isArray);
napi_is_array(env, argv[ARGV_INDEX_0], &isArray);
NAPI_ASSERT(env, isArray == true, "type mismatch for parameter 1");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
napi_typeof(env, argv[2], &valueType);
napi_typeof(env, argv[ARGV_INDEX_2], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 3");
std::vector<int32_t> array;
uint32_t arrayLength = 0;
napi_get_array_length(env, argv[0], &arrayLength);
napi_get_array_length(env, argv[ARGV_INDEX_0], &arrayLength);
for (size_t i = 0; i < arrayLength; i++) {
bool hasElement = false;
napi_has_element(env, argv[0], i, &hasElement);
napi_has_element(env, argv[ARGV_INDEX_0], i, &hasElement);
NAPI_ASSERT(env, hasElement == true, "parameter check error");
napi_value element = nullptr;
napi_get_element(env, argv[0], i, &element);
napi_get_element(env, argv[ARGV_INDEX_0], i, &element);
int32_t value = 0;
napi_get_value_int32(env, element, &value);
......@@ -608,9 +612,9 @@ napi_value NAPIAshmem::WriteToAshmem(napi_env env, napi_callback_info info)
}
int64_t size = 0;
napi_get_value_int64(env, argv[1], &size);
napi_get_value_int64(env, argv[ARGV_INDEX_1], &size);
int64_t offset = 0;
napi_get_value_int64(env, argv[2], &offset);
napi_get_value_int64(env, argv[ARGV_INDEX_2], &offset);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
NAPI_ASSERT(env, napiAshmem != nullptr, "napiAshmem is null");
......@@ -644,18 +648,18 @@ napi_value NAPIAshmem::WriteAshmem(napi_env env, napi_callback_info info)
std::vector<int32_t> array;
uint32_t arrayLength = 0;
napi_get_array_length(env, argv[0], &arrayLength);
napi_get_array_length(env, argv[ARGV_INDEX_0], &arrayLength);
for (size_t i = 0; i < arrayLength; i++) {
bool hasElement = false;
napi_has_element(env, argv[0], i, &hasElement);
napi_has_element(env, argv[ARGV_INDEX_0], i, &hasElement);
if (hasElement == false) {
ZLOGE(LOG_LABEL, "parameter check error");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_value element = nullptr;
napi_get_element(env, argv[0], i, &element);
napi_get_element(env, argv[ARGV_INDEX_0], i, &element);
int32_t value = 0;
napi_get_value_int32(env, element, &value);
......@@ -663,9 +667,9 @@ napi_value NAPIAshmem::WriteAshmem(napi_env env, napi_callback_info info)
}
int64_t size = 0;
napi_get_value_int64(env, argv[1], &size);
napi_get_value_int64(env, argv[ARGV_INDEX_1], &size);
int64_t offset = 0;
napi_get_value_int64(env, argv[2], &offset);
napi_get_value_int64(env, argv[ARGV_INDEX_2], &offset);
NAPIAshmem *napiAshmem = nullptr;
napi_unwrap(env, thisVar, (void **)&napiAshmem);
if (napiAshmem == nullptr) {
......@@ -695,18 +699,18 @@ napi_value NAPIAshmem::CheckWriteAshmemParams(napi_env env, size_t argc, napi_va
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
bool isArray = false;
napi_is_array(env, argv[0], &isArray);
napi_is_array(env, argv[ARGV_INDEX_0], &isArray);
if (isArray == false) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 2");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
}
napi_typeof(env, argv[2], &valueType);
napi_typeof(env, argv[ARGV_INDEX_2], &valueType);
if (valueType != napi_number) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 4");
return napiErr.ThrowError(env, OHOS::errorDesc::CHECK_PARAM_ERROR);
......@@ -775,21 +779,21 @@ napi_value NAPIAshmem::Ashmem_JS_Constructor(napi_env env, napi_callback_info in
} else {
NAPI_ASSERT(env, argc == 2, "requires 2 parameter");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_string, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 2");
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
NAPI_ASSERT(env, bufferSize < maxLen, "string length too large");
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[0], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], stringValue, bufferSize + 1, &jsStringLength);
NAPI_ASSERT(env, jsStringLength == bufferSize, "string length wrong");
std::string ashmemName = stringValue;
uint32_t ashmemSize = 0;
napi_get_value_uint32(env, argv[1], &ashmemSize);
napi_get_value_uint32(env, argv[ARGV_INDEX_1], &ashmemSize);
// new napi Ashmem
sptr<Ashmem> nativeAshmem = Ashmem::CreateAshmem(ashmemName.c_str(), ashmemSize);
NAPI_ASSERT(env, nativeAshmem != nullptr, "invalid parameters");
......
......@@ -39,6 +39,7 @@ static const size_t ARGV_INDEX_0 = 0;
static const size_t ARGV_INDEX_1 = 1;
static const size_t ARGV_INDEX_2 = 2;
static const size_t ARGV_INDEX_3 = 3;
static const size_t ARGV_INDEX_4 = 4;
static const uint64_t HITRACE_TAG_RPC = (1ULL << 46); // RPC and IPC tag.
static std::atomic<int32_t> bytraceId = 1000;
......@@ -191,15 +192,15 @@ napi_value RemoteObject_JS_Constructor(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc >= expectedArgc, "requires at least 1 parameters");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_string, "type mismatch for parameter 1");
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
NAPI_ASSERT(env, bufferSize < maxLen, "string length too large");
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[0], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], stringValue, bufferSize + 1, &jsStringLength);
NAPI_ASSERT(env, jsStringLength == bufferSize, "string length wrong");
std::string descriptor = stringValue;
auto holder = new NAPIRemoteObjectHolder(env, Str8ToStr16(descriptor), thisVar);
......@@ -356,7 +357,7 @@ napi_value NAPIRemoteObject::ThenCallback(napi_env env, napi_callback_info info)
napi_get_cb_info(env, info, &argc, argv, nullptr, &data);
CallbackParam *param = static_cast<CallbackParam *>(data);
bool result = false;
napi_get_value_bool(param->env, argv[0], &result);
napi_get_value_bool(param->env, argv[ARGV_INDEX_0], &result);
if (!result) {
ZLOGE(LOG_LABEL, "OnRemoteRequest res:%{public}s", result ? "true" : "false");
param->result = ERR_UNKNOWN_TRANSACTION;
......@@ -796,15 +797,15 @@ static napi_value NAPI_RemoteObject_queryLocalInterface(napi_env env, napi_callb
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == expectedArgc, "requires 1 parameters");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_string, "type mismatch for parameter 1");
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
NAPI_ASSERT(env, bufferSize < maxLen, "string length too large");
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[0], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], stringValue, bufferSize + 1, &jsStringLength);
NAPI_ASSERT(env, jsStringLength == bufferSize, "string length wrong");
std::string descriptor = stringValue;
NAPIRemoteObjectHolder *holder = nullptr;
......@@ -826,21 +827,21 @@ static napi_value NAPI_RemoteObject_getLocalInterface(napi_env env, napi_callbac
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
if (valueType != napi_string) {
ZLOGE(LOG_LABEL, "type mismatch for parameter 1");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], nullptr, 0, &bufferSize);
if (bufferSize >= maxLen) {
ZLOGE(LOG_LABEL, "string length too large");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[0], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_0], stringValue, bufferSize + 1, &jsStringLength);
if (jsStringLength != bufferSize) {
ZLOGE(LOG_LABEL, "string length wrong");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
......@@ -997,11 +998,11 @@ napi_value StubSendRequestAsync(napi_env env, sptr<IRemoteObject> target, uint32
StartAsyncTrace(HITRACE_TAG_RPC, (sendRequestParam->traceValue).c_str(), sendRequestParam->traceId);
}
}
napi_create_reference(env, argv[0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[4], 1, &sendRequestParam->callback);
napi_create_reference(env, argv[ARGV_INDEX_0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[ARGV_INDEX_1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[ARGV_INDEX_2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[ARGV_INDEX_3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[ARGV_INDEX_4], 1, &sendRequestParam->callback);
std::thread t(StubExecuteSendRequest, env, sendRequestParam);
t.detach();
napi_value result = nullptr;
......@@ -1041,10 +1042,10 @@ napi_value StubSendRequestPromise(napi_env env, sptr<IRemoteObject> target, uint
StartAsyncTrace(HITRACE_TAG_RPC, (sendRequestParam->traceValue).c_str(), sendRequestParam->traceId);
}
}
napi_create_reference(env, argv[0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[3], 1, &sendRequestParam->jsOptionRef);
napi_create_reference(env, argv[ARGV_INDEX_0], 1, &sendRequestParam->jsCodeRef);
napi_create_reference(env, argv[ARGV_INDEX_1], 1, &sendRequestParam->jsDataRef);
napi_create_reference(env, argv[ARGV_INDEX_2], 1, &sendRequestParam->jsReplyRef);
napi_create_reference(env, argv[ARGV_INDEX_3], 1, &sendRequestParam->jsOptionRef);
std::thread t(StubExecuteSendRequest, env, sendRequestParam);
t.detach();
return promise;
......@@ -1060,26 +1061,26 @@ static napi_value NAPI_RemoteObject_sendRequest(napi_env env, napi_callback_info
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == argcPromise || argc == argcCallback, "requires 4 or 5 parameters");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_number, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 2");
napi_typeof(env, argv[2], &valueType);
napi_typeof(env, argv[ARGV_INDEX_2], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 3");
napi_typeof(env, argv[3], &valueType);
napi_typeof(env, argv[ARGV_INDEX_3], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 4");
NAPI_MessageParcel *data = nullptr;
napi_status status = napi_unwrap(env, argv[1], (void **)&data);
napi_status status = napi_unwrap(env, argv[ARGV_INDEX_1], (void **)&data);
NAPI_ASSERT(env, status == napi_ok, "failed to get data message parcel");
NAPI_MessageParcel *reply = nullptr;
status = napi_unwrap(env, argv[2], (void **)&reply);
status = napi_unwrap(env, argv[ARGV_INDEX_2], (void **)&reply);
NAPI_ASSERT(env, status == napi_ok, "failed to get reply message parcel");
MessageOption *option = nullptr;
status = napi_unwrap(env, argv[3], (void **)&option);
status = napi_unwrap(env, argv[ARGV_INDEX_3], (void **)&option);
NAPI_ASSERT(env, status == napi_ok, "failed to get message option");
int32_t code = 0;
napi_get_value_int32(env, argv[0], &code);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &code);
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, thisVar);
if (argc == argcCallback) {
......@@ -1145,25 +1146,25 @@ static napi_value NAPI_RemoteObject_sendMessageRequest(napi_env env, napi_callba
return checkArgsResult;
}
NAPI_MessageSequence *data = nullptr;
napi_status status = napi_unwrap(env, argv[1], (void **)&data);
napi_status status = napi_unwrap(env, argv[ARGV_INDEX_1], (void **)&data);
if (status != napi_ok) {
ZLOGE(LOG_LABEL, "failed to get data message sequence");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
NAPI_MessageSequence *reply = nullptr;
status = napi_unwrap(env, argv[2], (void **)&reply);
status = napi_unwrap(env, argv[ARGV_INDEX_2], (void **)&reply);
if (status != napi_ok) {
ZLOGE(LOG_LABEL, "failed to get data message sequence");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
MessageOption *option = nullptr;
status = napi_unwrap(env, argv[3], (void **)&option);
status = napi_unwrap(env, argv[ARGV_INDEX_3], (void **)&option);
if (status != napi_ok) {
ZLOGE(LOG_LABEL, "failed to get message option");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
int32_t code = 0;
napi_get_value_int32(env, argv[0], &code);
napi_get_value_int32(env, argv[ARGV_INDEX_0], &code);
sptr<IRemoteObject> target = NAPI_ohos_rpc_getNativeRemoteObject(env, thisVar);
if (argc == argcCallback) {
......@@ -1188,24 +1189,24 @@ static napi_value NAPI_RemoteObject_attachLocalInterface(napi_env env, napi_call
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
NAPI_ASSERT(env, argc == expectedArgc, "requires 2 parameters");
napi_valuetype valueType = napi_null;
napi_typeof(env, argv[0], &valueType);
napi_typeof(env, argv[ARGV_INDEX_0], &valueType);
NAPI_ASSERT(env, valueType == napi_object, "type mismatch for parameter 1");
napi_typeof(env, argv[1], &valueType);
napi_typeof(env, argv[ARGV_INDEX_1], &valueType);
NAPI_ASSERT(env, valueType == napi_string, "type mismatch for parameter 2");
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[1], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_1], nullptr, 0, &bufferSize);
NAPI_ASSERT(env, bufferSize < maxLen, "string length too large");
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[1], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_1], stringValue, bufferSize + 1, &jsStringLength);
NAPI_ASSERT(env, jsStringLength == bufferSize, "string length wrong");
std::string descriptor = stringValue;
NAPIRemoteObjectHolder *holder = nullptr;
napi_unwrap(env, thisVar, (void* *)&holder);
NAPI_ASSERT(env, holder != nullptr, "failed to get napi remote object holder");
holder->attachLocalInterface(argv[0], descriptor);
holder->attachLocalInterface(argv[ARGV_INDEX_0], descriptor);
napi_value result = nullptr;
napi_get_undefined(env, &result);
......@@ -1248,14 +1249,14 @@ static napi_value NAPI_RemoteObject_modifyLocalInterface(napi_env env, napi_call
}
size_t bufferSize = 0;
size_t maxLen = 40960;
napi_get_value_string_utf8(env, argv[1], nullptr, 0, &bufferSize);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_1], nullptr, 0, &bufferSize);
if (bufferSize >= maxLen) {
ZLOGE(LOG_LABEL, "string length too large");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
}
char stringValue[bufferSize + 1];
size_t jsStringLength = 0;
napi_get_value_string_utf8(env, argv[1], stringValue, bufferSize + 1, &jsStringLength);
napi_get_value_string_utf8(env, argv[ARGV_INDEX_1], stringValue, bufferSize + 1, &jsStringLength);
if (jsStringLength != bufferSize) {
ZLOGE(LOG_LABEL, "string length wrong");
return napiErr.ThrowError(env, errorDesc::CHECK_PARAM_ERROR);
......@@ -1268,7 +1269,7 @@ static napi_value NAPI_RemoteObject_modifyLocalInterface(napi_env env, napi_call
ZLOGE(LOG_LABEL, "failed to get napi remote object holder");
return nullptr;
}
holder->attachLocalInterface(argv[0], descriptor);
holder->attachLocalInterface(argv[ARGV_INDEX_0], descriptor);
napi_value result = nullptr;
napi_get_undefined(env, &result);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册