[PATCH weston] Revert "config-parser: Catch negative numbers assigned to unsigned config values"

Bryce Harrington bryce at osg.samsung.com
Wed Jul 13 20:27:29 UTC 2016


The reduction in range limits does have an effect for color values,
which are expressed as hexadecimal values from 0x00000000 to
0xFFFFFFFF.  By limiting the range to INT_MAX, color values of
0x80000000 and up are in fact lost.

This reverts commit 6351fb08c2e302f8696b2022830e5317e7219c39.

Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>
---
 shared/config-parser.c     | 12 +-----------
 tests/config-parser-test.c | 31 -------------------------------
 2 files changed, 1 insertion(+), 42 deletions(-)

diff --git a/shared/config-parser.c b/shared/config-parser.c
index 4c67220..1e08759 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -186,7 +186,6 @@ weston_config_section_get_uint(struct weston_config_section *section,
 			       const char *key,
 			       uint32_t *value, uint32_t default_value)
 {
-	long int ret;
 	struct weston_config_entry *entry;
 	char *end;
 
@@ -198,22 +197,13 @@ weston_config_section_get_uint(struct weston_config_section *section,
 	}
 
 	errno = 0;
-	ret = strtol(entry->value, &end, 0);
+	*value = strtoul(entry->value, &end, 0);
 	if (errno != 0 || end == entry->value || *end != '\0') {
 		*value = default_value;
 		errno = EINVAL;
 		return -1;
 	}
 
-	/* check range */
-	if (ret < 0 || ret > INT_MAX) {
-		*value = default_value;
-		errno = ERANGE;
-		return -1;
-	}
-
-	*value = ret;
-
 	return 0;
 }
 
diff --git a/tests/config-parser-test.c b/tests/config-parser-test.c
index f88e89b..735da4e 100644
--- a/tests/config-parser-test.c
+++ b/tests/config-parser-test.c
@@ -117,7 +117,6 @@ static struct zuc_fixture config_test_t1 = {
 	"# more comments\n"
 	"number=5252\n"
 	"zero=0\n"
-	"negative=-42\n"
 	"flag=false\n"
 	"\n"
 	"[stuff]\n"
@@ -462,36 +461,6 @@ ZUC_TEST_F(config_test_t1, test019, data)
 	ZUC_ASSERT_EQ(0, errno);
 }
 
-ZUC_TEST_F(config_test_t1, test020, data)
-{
-	int r;
-	int32_t n;
-	struct weston_config_section *section;
-	struct weston_config *config = data;
-
-	section = weston_config_get_section(config, "bar", NULL, NULL);
-	r = weston_config_section_get_int(section, "negative", &n, 600);
-
-	ZUC_ASSERT_EQ(0, r);
-	ZUC_ASSERT_EQ(-42, n);
-	ZUC_ASSERT_EQ(0, errno);
-}
-
-ZUC_TEST_F(config_test_t1, test021, data)
-{
-	int r;
-	uint32_t n;
-	struct weston_config_section *section;
-	struct weston_config *config = data;
-
-	section = weston_config_get_section(config, "bar", NULL, NULL);
-	r = weston_config_section_get_uint(section, "negative", &n, 600);
-
-	ZUC_ASSERT_EQ(-1, r);
-	ZUC_ASSERT_EQ(600, n);
-	ZUC_ASSERT_EQ(ERANGE, errno);
-}
-
 ZUC_TEST_F(config_test_t2, doesnt_parse, data)
 {
 	struct weston_config *config = data;
-- 
1.9.1



More information about the wayland-devel mailing list