[PATCH v1] Added more error checks when strtol function is used
Pekka Paalanen
ppaalanen at gmail.com
Wed Nov 5 07:27:09 PST 2014
On Tue, 4 Nov 2014 15:55:06 +0200
Imran Zaman <imran.zaman at gmail.com> wrote:
> Signed-off-by: Imran Zaman <imran.zaman at gmail.com>
> ---
> src/scanner.c | 2 +-
> src/wayland-client.c | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/scanner.c b/src/scanner.c
> index 5e5152b..2ed9775 100644
> --- a/src/scanner.c
> +++ b/src/scanner.c
> @@ -407,7 +407,7 @@ start_element(void *data, const char *element_name, const char **atts)
> if (since != NULL) {
> errno = 0;
> version = strtol(since, &end, 0);
> - if (errno == EINVAL || end == since || *end != '\0')
> + if (errno != 0 || end == since || *end != '\0')
> fail(&ctx->loc,
> "invalid integer (%s)\n", since);
> } else {
> diff --git a/src/wayland-client.c b/src/wayland-client.c
> index b0f77b9..c99dbeb 100644
> --- a/src/wayland-client.c
> +++ b/src/wayland-client.c
> @@ -829,8 +829,9 @@ wl_display_connect(const char *name)
>
> connection = getenv("WAYLAND_SOCKET");
> if (connection) {
> + errno = 0;
> fd = strtol(connection, &end, 0);
> - if (*end != '\0')
> + if (errno != 0 || connection == end || *end != '\0')
> return NULL;
>
> flags = fcntl(fd, F_GETFD);
If we follow the "don't clobber errno with zero" rule of thumb, here
you'd need to save errno first, do strtol, and if strtol succeeded,
restore errno.
Otherwise looks good.
Thanks,
pq
More information about the wayland-devel
mailing list