From 61beda653b85c5b9bfb2f2fbf120ac7ab5a3fde9 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 14 Nov 2016 15:05:28 +0200 Subject: [PATCH] xwayland: fix lock file parsing Patch 139fcabe7cdb1f2296bf02ef917aaab84e00cd4e "xwayland: Improve error checking for strtol call" caused a regression in the X11 unix socket lock file parsing. Before that patch, only the first 10 characters were considered for parsing. After the patch, the newline as the 11th character caused strtol() to stop parsing at the 10th character which was then considered an error as not the whole input was consumed. The effect of the regression was that no X11 lock files were ever deemed stale, hence stale lock files were never removed. Up till now, I have accumulated 37 lock files, and Weston complaining for each of them on every start it cannot parse them. Fix this by terminating the string at the expected newline character. Also, it looks like 'pid' was being used uninitialized, risking strtol() reading past the end of the array. This patch fixes that too. Signed-off-by: Pekka Paalanen Reviewed-by: Daniel Stone --- xwayland/launcher.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xwayland/launcher.c b/xwayland/launcher.c index dcc4b972..97d7c6ee 100644 --- a/xwayland/launcher.c +++ b/xwayland/launcher.c @@ -166,6 +166,9 @@ create_lockfile(int display, char *lockfile, size_t lsize) return -1; } + /* Trim the newline, ensure terminated string. */ + pid[10] = '\0'; + if (!safe_strtoint(pid, &other)) { weston_log("can't parse lock file %s\n", lockfile);