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

Bryce Harrington bryce at osg.samsung.com
Wed Jul 13 21:41:55 UTC 2016


On Wed, Jul 13, 2016 at 02:12:43PM -0700, Yong Bakos wrote:
> On Jul 13, 2016, at 1:27 PM, Bryce Harrington <bryce at osg.samsung.com> wrote:
> > 
> > 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>
> 
> Reviewed-by: Yong Bakos <ybakos at humanoriented.com>
> Tested-by: Yong Bakos <ybakos at humanoriented.com>

Thanks, Derek also acked it as looking ok on irc.

Pushed:
   a8d987d..03793e3  master -> master

 
> yong
> 
> 
> > ---
> > 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
> > 
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list