Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69eb60be authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes Idafeb835,Ie1a9bf85

* changes:
  libcutils: Use strnlen for default property values
  Use clang-format to fix up properties.c
parents 1d5965e4 e67abec5
Loading
Loading
Loading
Loading
+16 −26
Original line number Diff line number Diff line
@@ -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) {
@@ -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, "");
@@ -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;
@@ -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);
@@ -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;
@@ -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);
}
+52 −3
Original line number Diff line number Diff line
@@ -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, ""));

@@ -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) {