Require base-10 for strtol() calls
authorBryce Harrington <bryce@osg.samsung.com>
Tue, 12 Jul 2016 23:51:27 +0000 (16:51 -0700)
committerBryce Harrington <bryce@osg.samsung.com>
Wed, 13 Jul 2016 01:46:13 +0000 (18:46 -0700)
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.

This change is an expansion of f6051cbab84c0e577473b67f0585c0f329eb80fe
to cover the remaining strtol() calls in Weston, where the routine is
being used to read fds and pids - which are always expressed in base-10.
It also changes the calls in config-parser, used by
weston_config_section_get_int(), which in turn is being used to read
scales, sizes, times, rates, and delays; these are all expressed in
base-10 numbers only.

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, it may make it possible to
factor out the common code in the future.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
compositor/main.c
libweston/compositor.c
shared/config-parser.c
xwayland/launcher.c

index 0cb8564..1f75ae0 100644 (file)
@@ -1684,7 +1684,7 @@ int main(int argc, char *argv[])
        server_socket = getenv("WAYLAND_SERVER_SOCKET");
        if (server_socket) {
                weston_log("Running with single client\n");
-               fd = strtol(server_socket, &end, 0);
+               fd = strtol(server_socket, &end, 10);
                if (*end != '\0')
                        fd = -1;
        } else {
index 771f1c9..96eeb17 100644 (file)
@@ -4617,7 +4617,7 @@ weston_environment_get_fd(const char *env)
        e = getenv(env);
        if (!e)
                return -1;
-       fd = strtol(e, &end, 0);
+       fd = strtol(e, &end, 10);
        if (*end != '\0')
                return -1;
 
index 247e880..4c67220 100644 (file)
@@ -170,7 +170,7 @@ weston_config_section_get_int(struct weston_config_section *section,
        }
 
        errno = 0;
-       *value = strtol(entry->value, &end, 0);
+       *value = strtol(entry->value, &end, 10);
        if (errno != 0 || end == entry->value || *end != '\0') {
                *value = default_value;
                errno = EINVAL;
index 614ef5b..b7aee3b 100644 (file)
@@ -164,7 +164,7 @@ create_lockfile(int display, char *lockfile, size_t lsize)
                        return -1;
                }
 
-               other = strtol(pid, &end, 0);
+               other = strtol(pid, &end, 10);
                if (end != pid + 10) {
                        weston_log("can't parse lock file %s\n",
                                lockfile);