Loading libcutils/properties.c +16 −26 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ int8_t property_get_bool(const char *key, int8_t default_value) { } int8_t result = default_value; char buf[PROPERTY_VALUE_MAX] = {'\0',}; char buf[PROPERTY_VALUE_MAX] = {'\0'}; int len = property_get(key, buf, ""); if (len == 1) { Loading Loading @@ -65,7 +65,7 @@ static intmax_t property_get_imax(const char *key, intmax_t lower_bound, intmax_ } intmax_t result = default_value; char buf[PROPERTY_VALUE_MAX] = {'\0',}; char buf[PROPERTY_VALUE_MAX] = {'\0'}; char *end = NULL; int len = property_get(key, buf, ""); Loading @@ -86,8 +86,8 @@ static intmax_t property_get_imax(const char *key, intmax_t lower_bound, intmax_ } else if (end == buf) { // Numeric conversion failed result = default_value; ALOGV("%s(%s,%" PRIdMAX ") - numeric conversion failed", __FUNCTION__, key, default_value); ALOGV("%s(%s,%" PRIdMAX ") - numeric conversion failed", __FUNCTION__, key, default_value); } errno = tmp; Loading @@ -107,13 +107,11 @@ int32_t property_get_int32(const char *key, int32_t default_value) { #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ #include <sys/_system_properties.h> int property_set(const char *key, const char *value) { int property_set(const char *key, const char *value) { return __system_property_set(key, value); } int property_get(const char *key, char *value, const char *default_value) { int property_get(const char *key, char *value, const char *default_value) { int len; len = __system_property_get(key, value); Loading @@ -121,24 +119,19 @@ int property_get(const char *key, char *value, const char *default_value) return len; } if (default_value) { len = strlen(default_value); if (len >= PROPERTY_VALUE_MAX) { len = PROPERTY_VALUE_MAX - 1; } len = strnlen(default_value, PROPERTY_VALUE_MAX - 1); memcpy(value, default_value, len); value[len] = '\0'; } return len; } struct property_list_callback_data { struct property_list_callback_data { void (*propfn)(const char *key, const char *value, void *cookie); void *cookie; }; static void property_list_callback(const prop_info *pi, void *cookie) { static void property_list_callback(const prop_info *pi, void *cookie) { char name[PROP_NAME_MAX]; char value[PROP_VALUE_MAX]; struct property_list_callback_data *data = cookie; Loading @@ -147,10 +140,7 @@ static void property_list_callback(const prop_info *pi, void *cookie) data->propfn(name, value, data->cookie); } int property_list( void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) { int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) { struct property_list_callback_data data = {propfn, cookie}; return __system_property_foreach(property_list_callback, &data); } libcutils/tests/PropertiesTest.cpp +52 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ TEST_F(PropertiesTest, SetString) { TEST_F(PropertiesTest, GetString) { // Try to use a default value that's too long => set fails // Try to use a default value that's too long => get truncates the value { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); Loading @@ -172,6 +172,55 @@ TEST_F(PropertiesTest, GetString) { EXPECT_STREQ(maxLengthString.c_str(), mValue); ResetValue(); } // Try to use a default value that's the max length => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string maxLengthString = std::string(PROPERTY_VALUE_MAX - 1, 'b'); // Expect that the value matches maxLengthString int len = property_get(PROPERTY_TEST_KEY, mValue, maxLengthString.c_str()); EXPECT_EQ(PROPERTY_VALUE_MAX - 1, len); EXPECT_STREQ(maxLengthString.c_str(), mValue); ResetValue(); } // Try to use a default value of length one => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string oneCharString = std::string(1, 'c'); // Expect that the value matches oneCharString int len = property_get(PROPERTY_TEST_KEY, mValue, oneCharString.c_str()); EXPECT_EQ(1, len); EXPECT_STREQ(oneCharString.c_str(), mValue); ResetValue(); } // Try to use a default value of length zero => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string zeroCharString = std::string(0, 'd'); // Expect that the value matches oneCharString int len = property_get(PROPERTY_TEST_KEY, mValue, zeroCharString.c_str()); EXPECT_EQ(0, len); EXPECT_STREQ(zeroCharString.c_str(), mValue); ResetValue(); } // Try to use a NULL default value => get returns 0 { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); // Expect a return value of 0 int len = property_get(PROPERTY_TEST_KEY, mValue, NULL); EXPECT_EQ(0, len); ResetValue(); } } TEST_F(PropertiesTest, GetBool) { Loading Loading
libcutils/properties.c +16 −26 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ int8_t property_get_bool(const char *key, int8_t default_value) { } int8_t result = default_value; char buf[PROPERTY_VALUE_MAX] = {'\0',}; char buf[PROPERTY_VALUE_MAX] = {'\0'}; int len = property_get(key, buf, ""); if (len == 1) { Loading Loading @@ -65,7 +65,7 @@ static intmax_t property_get_imax(const char *key, intmax_t lower_bound, intmax_ } intmax_t result = default_value; char buf[PROPERTY_VALUE_MAX] = {'\0',}; char buf[PROPERTY_VALUE_MAX] = {'\0'}; char *end = NULL; int len = property_get(key, buf, ""); Loading @@ -86,8 +86,8 @@ static intmax_t property_get_imax(const char *key, intmax_t lower_bound, intmax_ } else if (end == buf) { // Numeric conversion failed result = default_value; ALOGV("%s(%s,%" PRIdMAX ") - numeric conversion failed", __FUNCTION__, key, default_value); ALOGV("%s(%s,%" PRIdMAX ") - numeric conversion failed", __FUNCTION__, key, default_value); } errno = tmp; Loading @@ -107,13 +107,11 @@ int32_t property_get_int32(const char *key, int32_t default_value) { #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ #include <sys/_system_properties.h> int property_set(const char *key, const char *value) { int property_set(const char *key, const char *value) { return __system_property_set(key, value); } int property_get(const char *key, char *value, const char *default_value) { int property_get(const char *key, char *value, const char *default_value) { int len; len = __system_property_get(key, value); Loading @@ -121,24 +119,19 @@ int property_get(const char *key, char *value, const char *default_value) return len; } if (default_value) { len = strlen(default_value); if (len >= PROPERTY_VALUE_MAX) { len = PROPERTY_VALUE_MAX - 1; } len = strnlen(default_value, PROPERTY_VALUE_MAX - 1); memcpy(value, default_value, len); value[len] = '\0'; } return len; } struct property_list_callback_data { struct property_list_callback_data { void (*propfn)(const char *key, const char *value, void *cookie); void *cookie; }; static void property_list_callback(const prop_info *pi, void *cookie) { static void property_list_callback(const prop_info *pi, void *cookie) { char name[PROP_NAME_MAX]; char value[PROP_VALUE_MAX]; struct property_list_callback_data *data = cookie; Loading @@ -147,10 +140,7 @@ static void property_list_callback(const prop_info *pi, void *cookie) data->propfn(name, value, data->cookie); } int property_list( void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) { int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) { struct property_list_callback_data data = {propfn, cookie}; return __system_property_foreach(property_list_callback, &data); }
libcutils/tests/PropertiesTest.cpp +52 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ TEST_F(PropertiesTest, SetString) { TEST_F(PropertiesTest, GetString) { // Try to use a default value that's too long => set fails // Try to use a default value that's too long => get truncates the value { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); Loading @@ -172,6 +172,55 @@ TEST_F(PropertiesTest, GetString) { EXPECT_STREQ(maxLengthString.c_str(), mValue); ResetValue(); } // Try to use a default value that's the max length => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string maxLengthString = std::string(PROPERTY_VALUE_MAX - 1, 'b'); // Expect that the value matches maxLengthString int len = property_get(PROPERTY_TEST_KEY, mValue, maxLengthString.c_str()); EXPECT_EQ(PROPERTY_VALUE_MAX - 1, len); EXPECT_STREQ(maxLengthString.c_str(), mValue); ResetValue(); } // Try to use a default value of length one => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string oneCharString = std::string(1, 'c'); // Expect that the value matches oneCharString int len = property_get(PROPERTY_TEST_KEY, mValue, oneCharString.c_str()); EXPECT_EQ(1, len); EXPECT_STREQ(oneCharString.c_str(), mValue); ResetValue(); } // Try to use a default value of length zero => get succeeds { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); std::string zeroCharString = std::string(0, 'd'); // Expect that the value matches oneCharString int len = property_get(PROPERTY_TEST_KEY, mValue, zeroCharString.c_str()); EXPECT_EQ(0, len); EXPECT_STREQ(zeroCharString.c_str(), mValue); ResetValue(); } // Try to use a NULL default value => get returns 0 { ASSERT_OK(property_set(PROPERTY_TEST_KEY, "")); // Expect a return value of 0 int len = property_get(PROPERTY_TEST_KEY, mValue, NULL); EXPECT_EQ(0, len); ResetValue(); } } TEST_F(PropertiesTest, GetBool) { Loading