[PATCH weston] option-parser: Require integer option string values to be base-10
Bryce Harrington
bryce at osg.samsung.com
Sat Jul 9 02:03:52 UTC 2016
On Fri, Jul 08, 2016 at 06:47:19PM -0700, Yong Bakos wrote:
> On Jul 8, 2016, at 5:52 PM, Bryce Harrington <bryce at osg.samsung.com> wrote:
> >
> > The third arg to strtol() specifies the base to assume for the number.
> > When 0 is passed, as is currently done in option-parser.c, hexadecimal
> > and octal numbers are permitted and automatically detected and
> > converted.
> >
> > In weston and the weston clients and tests using option-parser.c, the
> > options are all things that can be expected to be specified in base 10:
> > widths, heights, counts, scales, font sizes, ports, ttys, connectors,
> > etc. The subsurfaces client uses two modes, limited to values 0 and 1
> > only. The zuc testsuite has a --random parameter for specifying a seed,
> > which is the only option where using hexadecimal or octal numbers might
> > conceivably happen.
> >
> > The benefit of limiting this to base-10 is to eliminate surprises when
> > parsing numbers from the command line. Also, by making the code
> > consistent with other usages of strtol/strtoul, it may make it possible
> > to factor out the common code in the future.
> >
> > Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>
>
> I can't think of any drawbacks, other than when some future option has,
> say, a hex color value. But that's "YAGNI" for now, and would be easy to
> change later if need be.
Right, that's my thinking too. And if we did have a hex color option,
and someone did --color=336633, you'd want to force that to be handled as
hexidecimal and not permit it to accidentally autoconvert as decimal,
anyway.
> Reviewed-by: Yong Bakos <ybakos at humanoriented.com>
Thanks,
Bryce
> Regards,
> yong
>
>
> > ---
> > shared/option-parser.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/shared/option-parser.c b/shared/option-parser.c
> > index d5fee8e..33355b8 100644
> > --- a/shared/option-parser.c
> > +++ b/shared/option-parser.c
> > @@ -40,10 +40,10 @@ handle_option(const struct weston_option *option, char *value)
> >
> > switch (option->type) {
> > case WESTON_OPTION_INTEGER:
> > - * (int32_t *) option->data = strtol(value, &p, 0);
> > + * (int32_t *) option->data = strtol(value, &p, 10);
> > return *value && !*p;
> > case WESTON_OPTION_UNSIGNED_INTEGER:
> > - * (uint32_t *) option->data = strtoul(value, &p, 0);
> > + * (uint32_t *) option->data = strtoul(value, &p, 10);
> > return *value && !*p;
> > case WESTON_OPTION_STRING:
> > * (char **) option->data = strdup(value);
> > --
> > 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