From: Christophe CURIS <christophe.cu...@free.fr> When creating the environment variable for the sub-process that wmaker can create, Coverity pointed that if was possible to crash if the name of the display did not contain the ':', which is probably ok in most case, but we can't be sure about what it could contain in special cases.
This patch adds a proper check so, at least, it would not crash if the case were to arise. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> --- src/main.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 4c8ee9b..6780803 100644 --- a/src/main.c +++ b/src/main.c @@ -246,9 +246,22 @@ void SetupEnvironment(WScreen * scr) int len = strlen(DisplayName) + 64; tmp = wmalloc(len); snprintf(tmp, len, "DISPLAY=%s", XDisplayName(DisplayName)); - ptr = strchr(strchr(tmp, ':'), '.'); - if (ptr) - *ptr = 0; + + /* Search from the end to be compatible with ipv6 address */ + ptr = strrchr(tmp, ':'); + if (ptr == NULL) { + static Bool message_already_displayed = False; + + if (!message_already_displayed) + wwarning(_("the display name has an unexpected syntax: \"%s\""), + XDisplayName(DisplayName)); + message_already_displayed = True; + } else { + /* If found, remove the screen specification from the display variable */ + ptr = strchr(ptr, '.'); + if (ptr) + *ptr = 0; + } snprintf(buf, sizeof(buf), ".%i", scr->screen); strcat(tmp, buf); putenv(tmp); -- 2.1.1 -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.