--- 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));
}