mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
fix: EncodePrivateSyscap outputLen check.
Change-Id: If099114c6137fffc181f66db2f868fe12083dfc8 Signed-off-by: yudechen <chenyude@huawei.com>
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -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') {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user