diff --git a/interfaces/native/node/style_modifier.cpp b/interfaces/native/node/style_modifier.cpp index 7b7ac11b10bd2ff0c4734883fcaef46a3828d7f1..44d9b31a17bcaee908b310deacb1f6b273b3c4bd 100644 --- a/interfaces/native/node/style_modifier.cpp +++ b/interfaces/native/node/style_modifier.cpp @@ -2881,11 +2881,19 @@ int32_t SetBackgroundImagePosition(ArkUI_NodeHandle node, const ArkUI_AttributeI ArkUI_Int32 alignMode[] = { ArkUI_Alignment::ARKUI_ALIGNMENT_TOP_START, ArkUI_Direction::ARKUI_DIRECTION_AUTO }; auto isAlign = false; if (actualSize >= 3) { + int32_t alignment = item->value[NUM_2].i32; + if (alignment < 0 || alignment > 8) { + return ERROR_CODE_PARAM_INVALID; + } isAlign = true; - alignMode[0] = item->value[NUM_2].i32; + alignMode[0] = alignment; } if (actualSize == 4) { - alignMode[1] = item->value[NUM_3].i32; + int32_t direction = item->value[NUM_3].i32; + if (direction < 0 || (direction > 1 && direction != 3)) { + return ERROR_CODE_PARAM_INVALID; + } + alignMode[1] = direction; } fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImagePosition( node->uiNodeHandle, values, units, alignMode, isAlign, actualSize, nullptr, nullptr); diff --git a/test/unittest/interfaces/native_node_napi_test.cpp b/test/unittest/interfaces/native_node_napi_test.cpp index 148ef3b32427f5e8db3f322851f9b1a0bd09b1ad..3c2f6ead07c03075479044e6a590cbf767c5eb3d 100644 --- a/test/unittest/interfaces/native_node_napi_test.cpp +++ b/test/unittest/interfaces/native_node_napi_test.cpp @@ -731,17 +731,13 @@ HWTEST_F(NativeNodeNapiTest, NativeBackgroundImagePositionTest003, TestSize.Leve nodeAPI->resetAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); value[2].i32 = -1; ArkUI_AttributeItem backgroundImagePosition2 = { .value = value, .size = 3 }; - nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition2); - auto ret2 = nodeAPI->getAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); - EXPECT_EQ(ret2->value[2].i32, 0); - EXPECT_EQ(ret2->value[3].i32, 3); + auto ret2 = nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition2); + EXPECT_EQ(ret2, ARKUI_ERROR_CODE_PARAM_INVALID); nodeAPI->resetAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); value[2].i32 = 9; ArkUI_AttributeItem backgroundImagePosition3 = { .value = value, .size = 3 }; - nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition3); - auto ret3 = nodeAPI->getAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); - EXPECT_EQ(ret3->value[2].i32, 0); - EXPECT_EQ(ret3->value[3].i32, 3); + auto ret3 = nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition3); + EXPECT_EQ(ret3, ARKUI_ERROR_CODE_PARAM_INVALID); } /** @@ -792,15 +788,11 @@ HWTEST_F(NativeNodeNapiTest, NativeBackgroundImagePositionTest004, TestSize.Leve nodeAPI->resetAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); value[3].i32 = -1; ArkUI_AttributeItem backgroundImagePosition2 = { .value = value, .size = 4 }; - nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition2); - auto ret2 = nodeAPI->getAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); - EXPECT_EQ(ret2->value[2].i32, 0); - EXPECT_EQ(ret2->value[3].i32, 3); + auto ret2 = nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition2); + EXPECT_EQ(ret2, ARKUI_ERROR_CODE_PARAM_INVALID); nodeAPI->resetAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); value[3].i32 = 2; ArkUI_AttributeItem backgroundImagePosition3 = { .value = value, .size = 4 }; - nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition3); - auto ret3 = nodeAPI->getAttribute(row, NODE_BACKGROUND_IMAGE_POSITION); - EXPECT_EQ(ret3->value[2].i32, 0); - EXPECT_EQ(ret3->value[3].i32, 3); + auto ret3 = nodeAPI->setAttribute(row, NODE_BACKGROUND_IMAGE_POSITION, &backgroundImagePosition3); + EXPECT_EQ(ret3, ARKUI_ERROR_CODE_PARAM_INVALID); } \ No newline at end of file