--- old/src/wmspec.c.orig 2006-02-28 00:53:02.000000000 +0100 +++ new/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)); } .