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.

Reply via email to