From bac72b29f8ba128de97656ccba2af157f680b61b Mon Sep 17 00:00:00 2001 From: Bryce Harrington Date: Fri, 8 Jul 2016 18:48:19 -0700 Subject: [PATCH] rdp: Check for non-numeric value in RDP_FD env var strtoul(nptr, endptr, ...) will set *endptr to nptr in the case of where no digits were read from the string, and return 0. Running with RDP_FD=foo would thus result in fd=0 being specified to freerdp_peer_new(), which is unlikely to be the user's intent. Signed-off-by: Bryce Harrington --- libweston/compositor-rdp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libweston/compositor-rdp.c b/libweston/compositor-rdp.c index d74dd5e5..79f06877 100644 --- a/libweston/compositor-rdp.c +++ b/libweston/compositor-rdp.c @@ -1209,6 +1209,7 @@ rdp_backend_create(struct weston_compositor *compositor, { struct rdp_backend *b; char *fd_str; + char *fd_tail; int fd; b = zalloc(sizeof *b); @@ -1261,8 +1262,8 @@ rdp_backend_create(struct weston_compositor *compositor, goto err_output; } - fd = strtoul(fd_str, NULL, 10); - if (rdp_peer_init(freerdp_peer_new(fd), b)) + fd = strtoul(fd_str, &fd_tail, 10); + if (fd_tail == fd_str || rdp_peer_init(freerdp_peer_new(fd), b)) goto err_output; }