From ffc59fed3cab1f59b63f014d25b81e403740df69 Mon Sep 17 00:00:00 2001 From: aodongbiao Date: Wed, 10 Aug 2022 16:48:39 +0800 Subject: [PATCH 1/7] =?UTF-8?q?syscap=5Fcheck.py=E7=9A=84=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E6=8C=89=E7=85=A7=E5=AD=97=E5=85=B8=E5=BA=8F=E6=8E=92?= =?UTF-8?q?=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: aodongbiao --- tools/syscap_check.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/syscap_check.py b/tools/syscap_check.py index ffd7eaf..ef63e01 100755 --- a/tools/syscap_check.py +++ b/tools/syscap_check.py @@ -55,6 +55,12 @@ def list_to_multiline(l): return str(l).lstrip("[").rstrip("]").replace(", ", "\n") +def add_dict_as_table_row(f_table, d_dict): + s_keys = sorted(list(d_dict.keys())) + for k in s_keys: + f_table.add_row([k, list_to_multiline(sorted(list(d_dict.get(k))))]) + + def read_value_from_json(filepath, key_hierarchy, result_dict): """ :param result_dict: result_dict @@ -187,8 +193,7 @@ def check_component_and_codec(project_path, bundles=None): return if 0 != len(component_diff_array): table.field_names = ["Syscap Only in Component", "Files"] - for syscap, files in value_files_dict.items(): - table.add_row([syscap, list_to_multiline(sorted(files))]) + add_dict_as_table_row(table, value_files_dict) elif 0 == len(component_diff_array): table.field_names = ["All Syscap in Component have been Covered by Codec"] print("\n") @@ -222,8 +227,7 @@ def check_component_and_sdk(project_path): table.clear() if 0 != len(component_diff_ts): table.field_names = ["SysCap Only in Component", "Files"] - for syscap, files in value_component_dict.items(): - table.add_row([syscap, list_to_multiline(sorted(list(files)))]) + add_dict_as_table_row(table, value_component_dict) elif 0 == len(component_diff_ts): table.field_names = ["SysCap in Component have been Covered by SDK"] print("\n") @@ -231,8 +235,7 @@ def check_component_and_sdk(project_path): table.clear() if 0 != len(ts_diff_component): table.field_names = ["SysCap Only in SDK", "Files"] - for syscap, files in value_ts_dict.items(): - table.add_row([syscap, list_to_multiline(sorted(list(files)))]) + add_dict_as_table_row(table, value_ts_dict) elif 0 == len(ts_diff_component): table.field_names = ["All SysCap in SDK have been Covered by Component"] print("\n") @@ -257,8 +260,7 @@ def check_sdk_and_codec(project_path): table.clear() if 0 != len(ts_diff_array): table.field_names = ["SysCap Only in SDK", "Files"] - for syscap, files in value_ts_dict.items(): - table.add_row([syscap, list_to_multiline(sorted(list(files)))]) + add_dict_as_table_row(table, value_ts_dict) elif 0 == len(ts_diff_array): table.field_names = ["SysCap in SDK have been Covered by Codec"] print("\n") From 8562730d063c73cfd9939c766d058711252856b2 Mon Sep 17 00:00:00 2001 From: yudechen Date: Thu, 11 Aug 2022 19:48:33 +0800 Subject: [PATCH 2/7] fix: EncodePrivateSyscap input null point should return true. Signed-off-by: yudechen Change-Id: I2ebf3fec0fd08a30763355f86ac7e35215016b61 --- interfaces/inner_api/syscap_interface.c | 3 ++- src/create_pcid.c | 4 ++-- test/unittest/common/syscap_codec_test.cpp | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index 14082ca..512b459 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -163,6 +163,7 @@ bool EncodePrivateSyscap(char **output, int *outputLen) *outputLen = bufferLen - PCID_MAIN_BYTES - 1; if (*outputLen == 0) { *output = outputStr; + (*outputLen)--; return true; } outputStr = (char *)malloc(*outputLen); @@ -246,7 +247,7 @@ bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *o if (input == NULL) { *output = outputArray; *outputCnt = syscapCnt; - return false; + return true; } while (*inputPos != '\0') { diff --git a/src/create_pcid.c b/src/create_pcid.c index 7926f93..ab48c8b 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -275,8 +275,8 @@ int32_t CreatePCID(char *inputFile, char *outDirPath) for (i = 0; i < privateCapSize; i++) { jsonArrayItem = cJSON_GetArrayItem(jsonPriSyscapObj, i); priSyscapStr = strchr(jsonArrayItem->valuestring, '.') + 1; - nRet = strcat_s(priSyscapHead, PRIVATE_SYSCAP_SIZE - 1, priSyscapStr); - nRet += strcat_s(priSyscapHead, PRIVATE_SYSCAP_SIZE - 1, ","); + nRet = strcat_s(priSyscapHead, allPriSyscapStrLen + 1, priSyscapStr); + nRet += strcat_s(priSyscapHead, allPriSyscapStrLen + 1, ","); if (nRet != EOK) { PRINT_ERR("strcat_s \"pri\" string is failed\n"); ret = -1; diff --git a/test/unittest/common/syscap_codec_test.cpp b/test/unittest/common/syscap_codec_test.cpp index bd388ea..b2b2054 100644 --- a/test/unittest/common/syscap_codec_test.cpp +++ b/test/unittest/common/syscap_codec_test.cpp @@ -49,6 +49,9 @@ HWTEST_F(SyscapCodecTest, EncodePrivateSyscap, TestSize.Level1) char *charPriInput = nullptr; int priOutLen; EXPECT_TRUE(EncodePrivateSyscap(&charPriInput, &priOutLen)); + // Currently, private syscap is null. + EXPECT_EQ(charPriInput, nullptr); + EXPECT_EQ(priOutLen, 0); free(charPriInput); } @@ -74,7 +77,7 @@ HWTEST_F(SyscapCodecTest, DecodeOsSyscap, TestSize.Level1) /* * @tc.name: DecodePrivateSyscap - * @tc.desc: Check the PrivateSyscap Decoding. + * @tc.desc: Check the null PrivateSyscap Decoding. * @tc.type: FUNC */ HWTEST_F(SyscapCodecTest, DecodePrivateSyscap, TestSize.Level1) From 010e55c403a5125a41f0844cb38893e87fc27a7c Mon Sep 17 00:00:00 2001 From: niulihua Date: Sat, 13 Aug 2022 16:02:13 +0800 Subject: [PATCH 3/7] modify for syscap Signed-off-by: niulihua Change-Id: I213b285f1ac4ad64ab2f1f207f02205bc54946ae --- include/syscap_define.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/syscap_define.h b/include/syscap_define.h index 915e809..5864707 100644 --- a/include/syscap_define.h +++ b/include/syscap_define.h @@ -32,7 +32,7 @@ typedef struct SystemCapabilityWithNum { typedef enum SystemCapabilityNum { ACCOUNT_APPACCOUNT, ACCOUNT_OSACCOUNT, - ACE_ACEENGINELITE, + ACE_ACEENGINELITE, // abandoned ACE_UIAPPEARANCE, // abandoned AI_AIENGINE, APPLICATIONS_CONTACTSDATA, @@ -214,6 +214,10 @@ typedef enum SystemCapabilityNum { ABILITY_FORM, COMMUNICATION_WIFI_AP_CORE, COMMUNICATION_WIFI_AP_EXTENSION, + ARKUI_ARKUI_LITE, + ARKUI_ARKUI_FULL, + ARKUI_ARKUI_LIBUV, + ARKUI_ARKUI_NAPI, // Add here SYSCAP_NUM_MAX = 960 } SyscapNum; @@ -225,6 +229,10 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.Account.OsAccount", ACCOUNT_OSACCOUNT}, {"SystemCapability.ArkUI.UiAppearance", ARKUI_UIAPPEARANCE}, {"SystemCapability.Ace.AceEngineLite", ACE_ACEENGINELITE}, + {"SystemCapability.ArkUI.ArkUI.Lite", ARKUI_ARKUI_LITE}, + {"SystemCapability.ArkUI.ArkUI.Full", ARKUI_ARKUI_FULL}, + {"SystemCapability.ArkUI.ArkUI.Libuv", ARKUI_ARKUI_LIBUV}, + {"SystemCapability.ArkUI.ArkUI.Napi", ARKUI_ARKUI_NAPI}, {"SystemCapability.Ai.AiEngine", AI_AIENGINE}, {"SystemCapability.Applications.ContactsData", APPLICATIONS_CONTACTSDATA}, {"SystemCapability.Barrierfree.Accessibility.Core", BARRIERFREE_ACCESSIBILITY_CORE}, From e434028363e0e5fb7bbb5ec74b631ab04871dc0e Mon Sep 17 00:00:00 2001 From: ma-shaoyin Date: Mon, 15 Aug 2022 11:02:16 +0800 Subject: [PATCH 4/7] Signed-off-by: ma-shaoyin Changes to be committed: --- include/syscap_define.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/syscap_define.h b/include/syscap_define.h index 5864707..eef8e65 100644 --- a/include/syscap_define.h +++ b/include/syscap_define.h @@ -309,7 +309,7 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.Location.Location.Geocoder", LOCATION_LOCATION_GEOCODER}, {"SystemCapability.Location.Location.Lite", LOCATION_LOCATION_LITE}, {"SystemCapability.MiscServices.Download", MISCSERVICES_DOWNLOAD}, - {"SystemCapability.MiscServices.InputMethod", MISCSERVICES_INPUTMETHOD}, + {"SystemCapability.MiscServices.InputMethodFramework", MISCSERVICES_INPUTMETHOD}, {"SystemCapability.MiscServices.Pasteboard", MISCSERVICES_PASTEBOARD}, {"SystemCapability.MiscServices.ScreenLock", MISCSERVICES_SCREENLOCK}, {"SystemCapability.MiscServices.Time", MISCSERVICES_TIME}, From 2651d5710e9e2d3b4f36e58a096bc7db4ec22a69 Mon Sep 17 00:00:00 2001 From: ma-shaoyin Date: Mon, 15 Aug 2022 16:09:22 +0800 Subject: [PATCH 5/7] Signed-off-by: ma-shaoyin Changes to be committed: --- include/syscap_define.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/syscap_define.h b/include/syscap_define.h index eef8e65..57f57ab 100644 --- a/include/syscap_define.h +++ b/include/syscap_define.h @@ -102,7 +102,7 @@ typedef enum SystemCapabilityNum { KERNEL_LITEOS_M, LOCATION_LOCATION, // abandoned MISCSERVICES_DOWNLOAD, - MISCSERVICES_INPUTMETHOD, + MISCSERVICES_INPUTMETHOD, // abandoned MISCSERVICES_PASTEBOARD, MISCSERVICES_SCREENLOCK, MISCSERVICES_TIME, @@ -218,6 +218,7 @@ typedef enum SystemCapabilityNum { ARKUI_ARKUI_FULL, ARKUI_ARKUI_LIBUV, ARKUI_ARKUI_NAPI, + MISCSERVICES_INPUTMETHOD_FRAMEWORK, // Add here SYSCAP_NUM_MAX = 960 } SyscapNum; @@ -309,7 +310,7 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.Location.Location.Geocoder", LOCATION_LOCATION_GEOCODER}, {"SystemCapability.Location.Location.Lite", LOCATION_LOCATION_LITE}, {"SystemCapability.MiscServices.Download", MISCSERVICES_DOWNLOAD}, - {"SystemCapability.MiscServices.InputMethodFramework", MISCSERVICES_INPUTMETHOD}, + {"SystemCapability.MiscServices.InputMethodFramework", MISCSERVICES_INPUTMETHOD_FRAMEWORK}, {"SystemCapability.MiscServices.Pasteboard", MISCSERVICES_PASTEBOARD}, {"SystemCapability.MiscServices.ScreenLock", MISCSERVICES_SCREENLOCK}, {"SystemCapability.MiscServices.Time", MISCSERVICES_TIME}, From 59e83874f46dcfadf2d30bfd613a3681736ed9d3 Mon Sep 17 00:00:00 2001 From: yudechen Date: Mon, 15 Aug 2022 15:33:46 +0800 Subject: [PATCH 6/7] fix: EncodePrivateSyscap outputLen check. Change-Id: If099114c6137fffc181f66db2f868fe12083dfc8 Signed-off-by: yudechen --- interfaces/inner_api/syscap_interface.c | 24 +++++++++++----------- test/unittest/common/syscap_codec_test.cpp | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index 512b459..1d5c618 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -160,21 +161,19 @@ bool EncodePrivateSyscap(char **output, int *outputLen) return false; } - *outputLen = bufferLen - PCID_MAIN_BYTES - 1; - if (*outputLen == 0) { - *output = outputStr; - (*outputLen)--; - return true; - } - outputStr = (char *)malloc(*outputLen); - if (outputStr == NULL) { - PRINT_ERR("malloc buffer failed, size = %d, errno = %d\n", *outputLen, errno); + int priLen = bufferLen - PCID_MAIN_BYTES - 1; + if (priLen <= 0) { + *outputLen = 0; + return false; + } + outputStr = (char *)calloc(priLen, sizeof(char)); + if (outputStr == NULL) { + PRINT_ERR("malloc buffer failed, size = %d, errno = %d\n", priLen, errno); *outputLen = 0; return false; } - (void)memset_s(outputStr, *outputLen, 0, *outputLen); - ret = strncpy_s(outputStr, *outputLen, contextBuffer + PCID_MAIN_BYTES, *outputLen - 1); + ret = strncpy_s(outputStr, priLen, contextBuffer + PCID_MAIN_BYTES, priLen - 1); if (ret != 0) { PRINT_ERR("strcpy_s failed."); FreeContextBuffer(contextBuffer); @@ -184,6 +183,7 @@ bool EncodePrivateSyscap(char **output, int *outputLen) } FreeContextBuffer(contextBuffer); + *outputLen = strlen(outputStr); *output = outputStr; return true; } @@ -247,7 +247,7 @@ bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *o if (input == NULL) { *output = outputArray; *outputCnt = syscapCnt; - return true; + return false; } while (*inputPos != '\0') { diff --git a/test/unittest/common/syscap_codec_test.cpp b/test/unittest/common/syscap_codec_test.cpp index b2b2054..7b9a0eb 100644 --- a/test/unittest/common/syscap_codec_test.cpp +++ b/test/unittest/common/syscap_codec_test.cpp @@ -50,7 +50,7 @@ HWTEST_F(SyscapCodecTest, EncodePrivateSyscap, TestSize.Level1) int priOutLen; EXPECT_TRUE(EncodePrivateSyscap(&charPriInput, &priOutLen)); // Currently, private syscap is null. - EXPECT_EQ(charPriInput, nullptr); + EXPECT_EQ(*charPriInput, '\0'); EXPECT_EQ(priOutLen, 0); free(charPriInput); } @@ -137,8 +137,8 @@ HWTEST_F(SyscapCodecTest, ComparePcidString, TestSize.Level1) const char rpcidString[] = "33588992,1766370052,65536,276824064,0,0,0,0,0,0,"\ "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"\ "SystemCapability.vendor.xxxxx1,SystemCapability.device.xxxxx2"; - const char expect[][256] = {"SystemCapability.Graphic.Wms", - "SystemCapability.HiviewDFX.HiLog", + const char expect[][256] = {"SystemCapability.Graphic.UI", + "SystemCapability.HiviewDFX.HiDumper", "SystemCapability.vendor.xxxxx1", "SystemCapability.device.xxxxx2"}; int32_t ret = ComparePcidString(pcidString, rpcidString, &result); From ecb4659c41aea321fe94a6a2ab4978c69cd64ac5 Mon Sep 17 00:00:00 2001 From: zhangyouyou Date: Mon, 15 Aug 2022 17:41:53 +0800 Subject: [PATCH 7/7] https://gitee.com/openharmony/developtools_syscap_codec/issues/I5ME9R Signed-off-by: zhangyouyou --- include/syscap_define.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/syscap_define.h b/include/syscap_define.h index 57f57ab..eb91afe 100644 --- a/include/syscap_define.h +++ b/include/syscap_define.h @@ -219,6 +219,7 @@ typedef enum SystemCapabilityNum { ARKUI_ARKUI_LIBUV, ARKUI_ARKUI_NAPI, MISCSERVICES_INPUTMETHOD_FRAMEWORK, + UTILS_LANG, // Add here SYSCAP_NUM_MAX = 960 } SyscapNum; @@ -392,6 +393,7 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.UserIAM.UserAuth.FingerprintAuth", USERIAM_USERAUTH_FINGERPRINTAUTH}, {"SystemCapability.UserIAM.UserAuth.PinAuth", USERIAM_USERAUTH_PINAUTH}, {"SystemCapability.UserIAM.UserIdm", USERIAM_USERIDM}, + {"SystemCapability.Utils.Lang", UTILS_LANG}, {"SystemCapability.Security.CertificateManager", SECURITY_CERTIFICATE_MANAGER}, {"SystemCapability.Developtools.Syscap", DEVELOPTOOLS_SYSCAP}, {"SystemCapability.Multimedia.Audio.Core", MULTIMEDIA_AUDIO_CORE},