提交 fca2ca55 编写于 作者: C cheng_jinsong

support empty string for value

Signed-off-by: Ncheng_jinsong <chengjinsong2@huawei.com>
上级 6c74dfe7
......@@ -44,7 +44,7 @@ int ConnectServer(int fd, const char *servername)
int FillParamMsgContent(const ParamMessage *request, uint32_t *start, int type, const char *value, uint32_t length)
{
PARAM_CHECK(request != NULL && start != NULL, return -1, "Invalid param");
PARAM_CHECK(value != NULL && length != 0, return -1, "Invalid value");
PARAM_CHECK(value != NULL, return -1, "Invalid value");
uint32_t bufferSize = request->msgSize - sizeof(ParamMessage);
uint32_t offset = *start;
PARAM_CHECK((offset + sizeof(ParamMsgContent) + length) <= bufferSize,
......@@ -52,8 +52,10 @@ int FillParamMsgContent(const ParamMessage *request, uint32_t *start, int type,
ParamMsgContent *content = (ParamMsgContent *)(request->data + offset);
content->type = type;
content->contentSize = length + 1;
int ret = memcpy_s(content->content, content->contentSize - 1, value, length);
PARAM_CHECK(ret == EOK, return -1, "Failed to copy value for %d", type);
if (length > 0) {
int ret = memcpy_s(content->content, content->contentSize - 1, value, length);
PARAM_CHECK(ret == EOK, return -1, "Failed to copy value for %d", type);
}
content->content[length] = '\0';
offset += sizeof(ParamMsgContent) + PARAM_ALIGN(content->contentSize);
*start = offset;
......
......@@ -204,6 +204,18 @@ HWTEST_F(ClientUnitTest, TestClient_01, TestSize.Level0)
SystemWaitParameter("@@@@", value.c_str(), 1);
}
HWTEST_F(ClientUnitTest, TestParamValue, TestSize.Level0)
{
// support empty string
const char *name = "test_readonly.dddddddddddddddddd.fffffffffffffffffff";
int ret = SystemSetParameter(name, "");
EXPECT_EQ(ret, 0);
ret = SystemSetParameter(name, "111111111");
EXPECT_EQ(ret, 0);
ret = SystemSetParameter(name, "");
EXPECT_EQ(ret, 0);
}
HWTEST_F(ClientUnitTest, TestClient_02, TestSize.Level0)
{
char testBuffer[PARAM_BUFFER_SIZE] = {0};
......
......@@ -40,7 +40,7 @@ static int CheckServerParamValue(const char *name, const char *expectValue)
u_int32_t len = sizeof(tmp);
SystemReadParam(name, tmp, &len);
printf("CheckParamValue name %s value: \'%s\' expectValue:\'%s\' \n", name, tmp, expectValue);
EXPECT_NE((int)strlen(tmp), 0);
EXPECT_GE((int)strlen(tmp), 0);
if (expectValue != nullptr) {
EXPECT_EQ(strcmp(tmp, expectValue), 0);
}
......@@ -366,6 +366,21 @@ HWTEST_F(ParamUnitTest, TestNameIsValid, TestSize.Level0)
test.TestNameIsValid();
}
HWTEST_F(ParamUnitTest, TestParamValue, TestSize.Level0)
{
// support empty string
const char *name = "test_readonly.dddddddddddddddddd.fffffffffffffffffff";
int ret = SystemWriteParam(name, "");
EXPECT_EQ(ret, 0);
CheckServerParamValue(name, "");
ret = SystemWriteParam(name, "111111111");
EXPECT_EQ(ret, 0);
CheckServerParamValue(name, "111111111");
ret = SystemWriteParam(name, "");
EXPECT_EQ(ret, 0);
CheckServerParamValue(name, "");
}
HWTEST_F(ParamUnitTest, TestAddSecurityLabel1, TestSize.Level0)
{
ParamUnitTest test;
......@@ -570,7 +585,7 @@ HWTEST_F(ParamUnitTest, TestRequestMessage, TestSize.Level0)
ret = FillParamMsgContent(msg, &start, 0, nullptr, 0);
EXPECT_NE(ret, 0);
ret = FillParamMsgContent(msg, &start, 0, "22222", 0);
EXPECT_NE(ret, 0);
EXPECT_EQ(ret, 0);
ret = FillParamMsgContent(msg, &start, 0, "22222", msgSize);
EXPECT_NE(ret, 0);
// fill success
......@@ -587,7 +602,7 @@ HWTEST_F(ParamUnitTest, TestRequestMessage, TestSize.Level0)
content = GetNextContent(msg, &offset);
EXPECT_NE(content, nullptr);
content = GetNextContent(msg, &offset);
EXPECT_EQ(content, nullptr);
EXPECT_NE(content, nullptr);
free(msg);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册