resource-manager: Fix parameter of string type setter 76/312876/1 accepted/tizen/8.0/unified/20240618.013421
authorYoungjae Cho <y0.cho@samsung.com>
Tue, 28 May 2024 02:55:21 +0000 (11:55 +0900)
committeryoungjae cho <y0.cho@samsung.com>
Mon, 17 Jun 2024 05:23:44 +0000 (05:23 +0000)
Change-Id: I1d6cfc4dea96730aaf6d6a69ba346300031a447c
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
(cherry picked from commit b6e10eabcf25d2f4da7d357f08f093ccd5b30c26)

include/libsyscommon/resource-manager.h
src/resource-manager/resource-manager.c
tests/resource-manager/common-interface.h
tests/resource-manager/display-interface.h
tests/resource-manager/resource-display.c
tests/resource-manager/test.c

index 609b8e9dab4faf325aca35a3bf8699b055403057..9bea67a18f07726c2dccd21ae147de8a712389c8 100644 (file)
@@ -242,7 +242,7 @@ int syscommon_resman_set_resource_attr_uint64_3(int resource_id, u_int64_t attr_
 int syscommon_resman_set_resource_attr_uint64_4(int resource_id, u_int64_t attr_id,
                                        u_int64_t data1, u_int64_t data2, u_int64_t data3, u_int64_t data4);
 int syscommon_resman_set_resource_attr_double(int resource_id, u_int64_t attr_id, double data);
-int syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, char data);
+int syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, const char *data);
 int syscommon_resman_set_resource_attr_array(int resource_id, u_int64_t attr_id, void *data, int count);
 int syscommon_resman_set_resource_attr_ptr(int resource_id, u_int64_t attr_id, void *data);
 
index 0a2e39bdc347f060969f204bb0075f071221fcf4..683c7d4f644e7949739e0e83c4cddd1dd1338e51 100644 (file)
@@ -1678,7 +1678,7 @@ syscommon_resman_set_resource_attr_double(int resource_id, u_int64_t attr_id, do
 }
 
 int
-syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, char data)
+syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, const char *data)
 {
        struct syscommon_resman_resource *resource = find_resource(resource_id);
 
index 28761759449dc702ca059ac8e8b898cb387b983c..1a418aa1ff6e9ee2dc39780a8fb4bad652a52c31 100644 (file)
@@ -17,6 +17,7 @@ typedef union {
        uint64_t u64;
        double d;
        void* p;
+       char *s;
        bool b;
 } resource_attr_data_t;
 
index 835d367aefce319a277d7326fa50a5d61ab6449a..b6a4b5bc57f3a5e18f808b4cdb75ea5dd1986185 100644 (file)
@@ -6,13 +6,14 @@
 #define DISPLAY_ATTR_UINT                              (1ULL << 2)
 #define DISPLAY_ATTR_UINT64                            (1ULL << 3)
 #define DISPLAY_ATTR_DOUBLE                            (1ULL << 4)
-#define DISPLAY_ATTR_2_UINT64                          (1ULL << 5)
-#define DISPLAY_ATTR_3_UINT64                          (1ULL << 6)
-#define DISPLAY_ATTR_4_UINT64                          (1ULL << 7)
-#define DISPLAY_ATTR_INT_IS_SUPPORT_FUNC               (1ULL << 8)
-#define DISPLAY_ATTR_INT_NO_IS_SUPPORT_FUNC            (1ULL << 9)
-#define DISPLAY_ATTR_INT_NO_GETTER                     (1ULL << 10)
-#define DISPLAY_ATTR_INT_NO_SETTER                     (1ULL << 11)
-#define DISPLAY_ATTR_MAX                               (1ULL << 12)
+#define DISPLAY_ATTR_STRING                            (1ULL << 5)
+#define DISPLAY_ATTR_2_UINT64                          (1ULL << 6)
+#define DISPLAY_ATTR_3_UINT64                          (1ULL << 7)
+#define DISPLAY_ATTR_4_UINT64                          (1ULL << 8)
+#define DISPLAY_ATTR_INT_IS_SUPPORT_FUNC               (1ULL << 9)
+#define DISPLAY_ATTR_INT_NO_IS_SUPPORT_FUNC            (1ULL << 10)
+#define DISPLAY_ATTR_INT_NO_GETTER                     (1ULL << 11)
+#define DISPLAY_ATTR_INT_NO_SETTER                     (1ULL << 12)
+#define DISPLAY_ATTR_MAX                               (1ULL << 13)
 
 #endif /* __TEST_DISPLAY_INTERFACE_H__ */
index 795a72a66f65ba9cc1456dc22341e76e4580a8ec..17190574256a80f138d76f6563ea7c8782cc7573 100644 (file)
@@ -59,6 +59,9 @@ static int test_display_get(int resource_id,
        case DISPLAY_ATTR_DOUBLE:
                attr_data.d = mock_type(double);
                break;
+       case DISPLAY_ATTR_STRING:
+               attr_data.s = mock_ptr_type(char *);
+               break;
        }
 
        ret = mock_type(int);
@@ -88,6 +91,9 @@ static int test_display_get(int resource_id,
        case SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN:
                *(bool *) data = attr_data.b;
                break;
+       case SYSCOMMON_RESMAN_DATA_TYPE_STRING:
+               strncpy(data, attr_data.s, SYSCOMMON_RESMAN_BUFF_MAX);
+               break;
        default:
                return -EINVAL;
        }
@@ -155,6 +161,16 @@ static const struct syscommon_resman_resource_attribute display_attrs[] = {
                        .set = test_display_set,
                        .is_supported = syscommon_resman_resource_attr_supported_always,
                },
+       }, {
+               .name           = "DISPLAY_ATTR_STRING",
+               .id             = DISPLAY_ATTR_STRING,
+               .type           = SYSCOMMON_RESMAN_DATA_TYPE_STRING,
+               .flag           = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
+               .ops    = {
+                       .get = test_display_get,
+                       .set = test_display_set,
+                       .is_supported = syscommon_resman_resource_attr_supported_always,
+               },
        }, {
                .name           = "DISPLAY_ATTR_2_UINT64",
                .id             = DISPLAY_ATTR_2_UINT64,
index aac81ffecf72eb8a140b59db4dca077c38c77771..5fda2b680b6a07b9aae0de0605584e84f6bf4f0c 100644 (file)
@@ -57,6 +57,7 @@ static void test_create_resource_pass(void **state)
                case DISPLAY_ATTR_UINT:
                case DISPLAY_ATTR_UINT64:
                case DISPLAY_ATTR_DOUBLE:
+               case DISPLAY_ATTR_STRING:
                        /**
                         * Check created resource has attr_value that has
                         * successfully been allocated memory for data
@@ -176,6 +177,49 @@ static void test_get_resource_attr_int_pass(void **state)
        delete_display_resource(resource_id);
 }
 
+static void test_get_resource_attr_string_pass_1(void **state)
+{
+       int resource_id;
+       int ret;
+       const char *expect = "expect";
+       char result[SYSCOMMON_RESMAN_BUFF_MAX] = { 0 , };
+
+       resource_id = create_display_resource();
+
+       will_return(test_display_get, expect);
+       will_return(test_display_get, 0);
+
+       ret = syscommon_resman_get_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, result);
+       assert_int_equal(ret, 0);
+       assert_string_equal(result, expect);
+
+       delete_display_resource(resource_id);
+}
+
+static void test_get_resource_attr_string_pass_2(void **state)
+{
+       int resource_id;
+       int ret;
+       const char *expect = "expect";
+       char *result = NULL;
+
+       resource_id = create_display_resource();
+
+       will_return(test_display_get, expect);
+       will_return(test_display_get, 0);
+
+       result = calloc(SYSCOMMON_RESMAN_BUFF_MAX, sizeof(char));
+       assert_non_null(result);
+
+       ret = syscommon_resman_get_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, result);
+       assert_int_equal(ret, 0);
+       assert_string_equal(result, expect);
+       free(result);
+       result = NULL;
+
+       delete_display_resource(resource_id);
+}
+
 static void test_get_resource_attr_int_fail_getter(void **state)
 {
        int resource_id;
@@ -309,6 +353,23 @@ static void test_set_resource_attr_int_pass(void **state)
        delete_display_resource(resource_id);
 }
 
+static void test_set_resource_attr_string_pass(void **state)
+{
+       int resource_id;
+       int ret;
+       const char *s = "address to a readonly segment";
+
+       resource_id = create_display_resource();
+
+       expect_memory(test_display_set, data, &s, sizeof(char *));
+       will_return(test_display_set, 0);
+
+       ret = syscommon_resman_set_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, s);
+       assert_int_equal(ret, 0);
+
+       delete_display_resource(resource_id);
+}
+
 static void test_set_resource_attr_int_fail_setter(void **state)
 {
        int resource_id;
@@ -785,6 +846,8 @@ static const struct CMUnitTest resource_manager_testsuite[] = {
        cmocka_unit_test(test_create_resource_fail_is_support_2),
 
        cmocka_unit_test(test_get_resource_attr_int_pass),
+       cmocka_unit_test(test_get_resource_attr_string_pass_1),
+       cmocka_unit_test(test_get_resource_attr_string_pass_2),
        cmocka_unit_test(test_get_resource_attr_int_fail_getter),
        cmocka_unit_test(test_get_resource_attr_int_fail_no_getter),
        cmocka_unit_test(test_get_resource_attr_int_fail_unmatched_type),
@@ -797,6 +860,7 @@ static const struct CMUnitTest resource_manager_testsuite[] = {
        cmocka_unit_test(test_get_resource_attr_int_fail_invalid_parameter_3),
 
        cmocka_unit_test(test_set_resource_attr_int_pass),
+       cmocka_unit_test(test_set_resource_attr_string_pass),
        cmocka_unit_test(test_set_resource_attr_int_fail_setter),
        cmocka_unit_test(test_set_resource_attr_int_fail_no_setter),
        cmocka_unit_test(test_set_resource_attr_int_fail_unmatched_type),