From 615a6137cd6182af3b98525c909f1efa5872721b Mon Sep 17 00:00:00 2001 From: yudechen Date: Sat, 7 May 2022 09:48:44 +0800 Subject: [PATCH] change EncodeOsSyscap parameters. Signed-off-by: yudechen Change-Id: I227b6b09b38dc300063b3e55e2929bd051429407 --- interfaces/inner_api/syscap_interface.c | 14 ++------------ interfaces/inner_api/syscap_interface.h | 2 +- napi/napi_query_syscap.cpp | 4 ++-- test/unittest/common/include/syscap_codec_test.h | 3 --- test/unittest/common/syscap_codec_test.cpp | 9 +++++---- 5 files changed, 10 insertions(+), 22 deletions(-) diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index fb99393..7ae550f 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -84,12 +84,11 @@ static uint32_t GetFileContext(char **contextBufPtr, uint32_t *bufferLen) return 0; } -bool EncodeOsSyscap(char **output) +bool EncodeOsSyscap(char output[128]) { int32_t ret; int32_t res; char *contextBuffer = NULL; - char *outputArray = NULL; uint32_t bufferLen; ret = GetFileContext(&contextBuffer, &bufferLen); @@ -98,23 +97,14 @@ bool EncodeOsSyscap(char **output) return false; } - outputArray = (char *)malloc(PCID_MAIN_LEN); - if (outputArray == NULL) { - PRINT_ERR("malloc buffer failed, size = %d\n", PCID_MAIN_LEN); - return false; - } - (void)memset_s(outputArray, PCID_MAIN_LEN, 0, PCID_MAIN_LEN); - - res = memcpy_s(outputArray, PCID_MAIN_LEN, contextBuffer, PCID_MAIN_LEN); + res = memcpy_s(output, PCID_MAIN_LEN, contextBuffer, PCID_MAIN_LEN); if (res != 0) { PRINT_ERR("memcpy_s failed."); FreeContextBuffer(contextBuffer); - free(outputArray); return false; } FreeContextBuffer(contextBuffer); - *output = outputArray; return true; } diff --git a/interfaces/inner_api/syscap_interface.h b/interfaces/inner_api/syscap_interface.h index c45895e..1336887 100644 --- a/interfaces/inner_api/syscap_interface.h +++ b/interfaces/inner_api/syscap_interface.h @@ -25,7 +25,7 @@ extern "C" { #endif /* __cplusplus */ #endif /* __cplusplus */ -bool EncodeOsSyscap(char **output); +bool EncodeOsSyscap(char output[128]); bool DecodeOsSyscap(char input[128], char (**output)[128], int *outputCnt); bool EncodePrivateSyscap(char **output, int *outputLen); bool DecodePrivateSyscap(char *input, char (**output)[128], int *outputCnt); diff --git a/napi/napi_query_syscap.cpp b/napi/napi_query_syscap.cpp index 2a2face..a0ddae9 100644 --- a/napi/napi_query_syscap.cpp +++ b/napi/napi_query_syscap.cpp @@ -61,7 +61,7 @@ static char* getSystemCapability() bool retBool; int retError, priOutputLen, priCapArrayCnt, sumLen; int i = 0; - char *osOutput = nullptr; + char osOutput[128] = {}; errno_t err = EOK; uint32_t *osCapU32 = nullptr; char *priOutput = nullptr; @@ -70,7 +70,7 @@ static char* getSystemCapability() char osCapArray[OS_SYSCAP_U32_NUM][U32_TO_STR_MAX_LEN] = {}; char (*priCapArray)[SYSCAP_STR_MAX_LEN] = nullptr; - retBool = EncodeOsSyscap(&osOutput); + retBool = EncodeOsSyscap(osOutput); if (!retBool) { PRINT_ERR("get encoded os syscap failed."); goto FREE_OSOUTPUT; diff --git a/test/unittest/common/include/syscap_codec_test.h b/test/unittest/common/include/syscap_codec_test.h index 61934ba..25c016c 100644 --- a/test/unittest/common/include/syscap_codec_test.h +++ b/test/unittest/common/include/syscap_codec_test.h @@ -26,9 +26,6 @@ extern "C" { #endif /* __cplusplus */ namespace Syscap { -int osSyscap[32] = {1, 3, 3}; -char priSyscap[] = "Device.syscap1GEDR,Device.syscap2WREGW,Vendor.syscap3RGD,Vendor.syscap4RWEG,Vendor.syscap5REWGWE,"; - class SyscapCodecTest : public testing::Test { public: static void SetUpTestCase(void); diff --git a/test/unittest/common/syscap_codec_test.cpp b/test/unittest/common/syscap_codec_test.cpp index fe7eac1..c8f39e1 100644 --- a/test/unittest/common/syscap_codec_test.cpp +++ b/test/unittest/common/syscap_codec_test.cpp @@ -34,9 +34,8 @@ void SyscapCodecTest::TearDown() {} */ HWTEST_F(SyscapCodecTest, EncodeOsSyscap, TestSize.Level1) { - char *OsInput = NULL; - EXPECT_TRUE(EncodeOsSyscap(&OsInput)); - free(OsInput); + char OsInput[128] = {0}; + EXPECT_TRUE(EncodeOsSyscap(OsInput)); } /* @@ -59,11 +58,12 @@ HWTEST_F(SyscapCodecTest, EncodePrivateSyscap, TestSize.Level1) */ HWTEST_F(SyscapCodecTest, DecodeOsSyscap, TestSize.Level1) { + int osSyscap[32] = {1, 3, 3}; char (*osOutput)[128] = NULL; int decodeOsCnt; char expectOsOutput001[] = "SystemCapability.Account.AppAccount"; char expectOsOutput002[] = "SystemCapability.Account.OsAccount"; - EXPECT_TRUE(DecodeOsSyscap(osSyscap, &osOutput, &decodeOsCnt)); + EXPECT_TRUE(DecodeOsSyscap((char *)osSyscap, &osOutput, &decodeOsCnt)); char (*tmpOsOutput)[128] = osOutput; EXPECT_STREQ(*tmpOsOutput, expectOsOutput001); EXPECT_STREQ(*(tmpOsOutput + 1), expectOsOutput002); @@ -79,6 +79,7 @@ HWTEST_F(SyscapCodecTest, DecodeOsSyscap, TestSize.Level1) HWTEST_F(SyscapCodecTest, DecodePrivateSyscap, TestSize.Level1) { char (*priOutput)[128] = NULL; + char priSyscap[] = "Device.syscap1GEDR,Device.syscap2WREGW,Vendor.syscap3RGD,Vendor.syscap4RWEG,Vendor.syscap5REWGWE,"; int decodePriCnt; char expectPriOutput001[] = "SystemCapability.Device.syscap1GEDR"; char expectPriOutput002[] = "SystemCapability.Device.syscap2WREGW";