Blob Blame History Raw
--- src/wmspec.c.orig	2006-02-28 00:53:02.000000000 +0100
+++ src/wmspec.c	2006-03-02 14:59:07.000000000 +0100
@@ -827,19 +827,27 @@
 updateWorkspaceNames(WScreen *scr)
 {
     char buf[1024], *pos;
-    unsigned int i, len, curr_size;
-
-    pos = buf;
+    unsigned int i, len, curr_size; 
     len = 0;
+
+    pos = memset(buf,'\0',sizeof(buf));
+    
     for(i = 0; i < scr->workspace_count; i++) {
-        curr_size = strlen(scr->workspaces[i]->name);
-        strcpy(pos, scr->workspaces[i]->name);
-        pos += (curr_size+1);
+
+	curr_size = strlen(scr->workspaces[i]->name);
+	
+	if(len + curr_size + 1 > sizeof(buf)) {
+	    break;
+	}
+
+        strncpy(pos, scr->workspaces[i]->name,sizeof(buf) - len);
+	
+	pos += (curr_size+1);
         len += (curr_size+1);
     }
 
     XChangeProperty(dpy, scr->root_win, net_desktop_names, utf8_string, 8,
-                    PropModeReplace, (unsigned char *)buf, len);
+                    PropModeReplace, (unsigned char *)buf, strlen(buf));
 }