!96 Modify defects of util

Merge pull request !96 from 史凯/master
This commit is contained in:
openharmony_ci
2022-02-21 13:34:04 +00:00
committed by Gitee
4 changed files with 74 additions and 43 deletions
+20 -12
View File
@@ -55,14 +55,14 @@ namespace OHOS::Util {
void *data = nullptr;
napi_value arrayBuffer = nullptr;
size_t bufferSize = outputLen;
NAPI_CALL(env, napi_create_arraybuffer(env, bufferSize, &data, &arrayBuffer));
napi_create_arraybuffer(env, bufferSize, &data, &arrayBuffer);
if (memcpy_s(data, bufferSize, reinterpret_cast<const void*>(rets), bufferSize) != 0) {
FreeMemory(rets);
HILOG_ERROR("copy ret to arraybuffer error");
return nullptr;
}
napi_value result = nullptr;
NAPI_CALL(env, napi_create_typedarray(env, napi_uint8_array, bufferSize, arrayBuffer, 0, &result));
napi_create_typedarray(env, napi_uint8_array, bufferSize, arrayBuffer, 0, &result);
FreeMemory(rets);
return result;
}
@@ -174,7 +174,7 @@ namespace OHOS::Util {
void *data = nullptr;
napi_value arrayBuffer = nullptr;
size_t bufferSize = decodeOutLen;
NAPI_CALL(env, napi_create_arraybuffer(env, bufferSize, &data, &arrayBuffer));
napi_create_arraybuffer(env, bufferSize, &data, &arrayBuffer);
if (memcpy_s(data, bufferSize, reinterpret_cast<const void*>(pret), bufferSize) != 0) {
FreeMemory(inputString);
FreeMemory(pret);
@@ -182,7 +182,7 @@ namespace OHOS::Util {
return nullptr;
}
napi_value result = nullptr;
NAPI_CALL(env, napi_create_typedarray(env, napi_uint8_array, bufferSize, arrayBuffer, 0, &result));
napi_create_typedarray(env, napi_uint8_array, bufferSize, arrayBuffer, 0, &result);
FreeMemory(inputString);
FreeMemory(pret);
return result;
@@ -284,18 +284,16 @@ namespace OHOS::Util {
/* Memory cleanup function */
void Base64::FreeMemory(unsigned char *address)
{
unsigned char *temp = address;
if (temp != nullptr) {
delete[] temp;
temp = nullptr;
if (address != nullptr) {
delete[] address;
address = nullptr;
}
}
void Base64::FreeMemory(char *address)
{
char *temp = address;
if (temp != nullptr) {
delete[] temp;
temp = nullptr;
if (address != nullptr) {
delete[] address;
address = nullptr;
}
}
napi_value Base64::Encode(napi_value src)
@@ -367,6 +365,7 @@ namespace OHOS::Util {
if (outputLen > 0) {
ret = new unsigned char[outputLen + 1];
if (memset_s(ret, outputLen + 1, '\0', outputLen + 1) != 0) {
FreeMemory(ret);
napi_throw_error(encodeInfo->env, "-1", "ret path memset_s failed");
}
} else {
@@ -544,6 +543,7 @@ namespace OHOS::Util {
if (retLen > 0) {
retDecode = new unsigned char[retLen + 1];
if (memset_s(retDecode, retLen + 1, '\0', retLen + 1) != 0) {
FreeMemory(retDecode);
napi_throw_error(decodeInfo->env, "-1", "decode retDecode memset_s failed");
}
} else {
@@ -596,4 +596,12 @@ namespace OHOS::Util {
delete[] stdDecodeInfo->sinputDecoding;
delete stdDecodeInfo;
}
void FreeMemory(unsigned char *address)
{
if (address != nullptr) {
delete[] address;
address = nullptr;
}
}
}
+6 -5
View File
@@ -46,11 +46,12 @@ namespace OHOS::Util {
napi_env env;
};
enum ConverterFlags {
BIT_FLG = 0x40,
SIXTEEN_FLG = 0x3F,
XFF_FLG = 0xFF,
};
enum ConverterFlags {
BIT_FLG = 0x40,
SIXTEEN_FLG = 0x3F,
XFF_FLG = 0xFF,
};
void FreeMemory(unsigned char *address);
unsigned char *EncodeAchieves(EncodeInfo *encodeInfo);
unsigned char *DecodeAchieves(DecodeInfo *decodeInfo);
class Base64 {
+8 -3
View File
@@ -41,14 +41,19 @@ namespace OHOS::Util {
NAPI_CALL(env_, napi_get_value_string_utf8(env_, src, buffer, 0, &bufferSize));
NAPI_ASSERT(env_, bufferSize > 0, "bufferSize == 0");
buffer = new char[bufferSize + 1];
NAPI_CALL(env_, napi_get_value_string_utf8(env_, src, buffer, bufferSize + 1, &bufferSize));
if (memset_s(buffer, bufferSize + 1, 0, bufferSize + 1) != 0) {
HILOG_ERROR("buffer memset error");
delete []buffer;
return nullptr;
}
napi_get_value_string_utf8(env_, src, buffer, bufferSize + 1, &bufferSize);
void *data = nullptr;
napi_value arrayBuffer = nullptr;
NAPI_CALL(env_, napi_create_arraybuffer(env_, bufferSize, &data, &arrayBuffer));
napi_create_arraybuffer(env_, bufferSize, &data, &arrayBuffer);
if (memcpy_s(data, bufferSize, reinterpret_cast<void*>(buffer), bufferSize) != 0) {
HILOG_ERROR("copy buffer to arraybuffer error");
delete []buffer;
return nullptr;
}
+40 -23
View File
@@ -23,6 +23,7 @@
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "securec.h"
#include "utils/log.h"
extern const char _binary_util_js_js_start[];
@@ -30,6 +31,17 @@ extern const char _binary_util_js_js_end[];
extern const char _binary_util_abc_start[];
extern const char _binary_util_abc_end[];
namespace OHOS::Util {
static char* ApplyMemory(const size_t length)
{
char *type = new char[length + 1];
if (memset_s(type, length + 1, '\0', length + 1) != 0) {
HILOG_ERROR("type memset_s failed");
delete[] type;
return nullptr;
}
return type;
}
static std::string temp = "cdfijoOs";
static std::string DealWithPrintf(const std::string &format, const std::vector<std::string> &value)
{
@@ -112,26 +124,31 @@ namespace OHOS::Util {
size_t argc = 0;
napi_get_cb_info(env, info, &argc, nullptr, nullptr, nullptr);
napi_value *argv = nullptr;
if (argc > 0) {
argv = new napi_value[argc];
napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
char *format = nullptr;
size_t formatsize = 0;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &formatsize);
if (formatsize > 0) {
format = new char[formatsize + 1];
napi_get_value_string_utf8(env, argv[0], format, formatsize + 1, &formatsize);
std::string str = format;
delete []format;
delete []argv;
argv = nullptr;
format = nullptr;
return FormatString(env, str);
}
NAPI_ASSERT(env, argc > 0, "argc == 0");
argv = new napi_value[argc + 1];
if (memset_s(argv, argc + 1, 0, argc + 1) != 0) {
HILOG_ERROR("argv memset error");
delete []argv;
return nullptr;
}
napi_value res = nullptr;
NAPI_CALL(env, napi_get_undefined(env, &res));
return res;
napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
char *format = nullptr;
size_t formatsize = 0;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &formatsize);
NAPI_ASSERT(env, formatsize > 0, "formatsize == 0");
format = new char[formatsize + 1];
if (memset_s(format, formatsize + 1, 0, formatsize + 1) != 0) {
HILOG_ERROR("format memset error");
delete []format;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], format, formatsize + 1, &formatsize);
std::string str = format;
delete []format;
delete []argv;
argv = nullptr;
format = nullptr;
return FormatString(env, str);
}
static std::string PrintfString(const std::string &format, const std::vector<std::string> &value)
@@ -259,9 +276,9 @@ namespace OHOS::Util {
// first para
NAPI_CALL(env, napi_get_value_string_utf8(env, argv, nullptr, 0, &typeLen));
if (typeLen > 0) {
type = new char[typeLen + 1]();
type = ApplyMemory(typeLen);
}
NAPI_CALL(env, napi_get_value_string_utf8(env, argv, type, typeLen + 1, &typeLen));
napi_get_value_string_utf8(env, argv, type, typeLen + 1, &typeLen);
} else if (tempArgc == 2) { // 2: The number of parameters is 2.
argc = 2; // 2: The number of parameters is 2.
napi_value argv[2] = { 0 };
@@ -269,9 +286,9 @@ namespace OHOS::Util {
// first para
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typeLen));
if (typeLen > 0) {
type = new char[typeLen + 1]();
type = ApplyMemory(typeLen);
}
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], type, typeLen + 1, &typeLen));
napi_get_value_string_utf8(env, argv[0], type, typeLen + 1, &typeLen);
// second para
GetSecPara(env, argv[1], paraVec);
}