$OpenBSD: patch-exec_c,v 1.1 2003/06/05 23:01:51 naddy Exp $ --- exec.c.orig Sun Jun 1 14:01:30 2003 +++ exec.c Sun Jun 1 14:53:55 2003 @@ -51,6 +51,7 @@ void wm_exec(const char *cmd) { int pid; char *tmp; + int tmp_len; pid=fork(); @@ -64,12 +65,13 @@ void wm_exec(const char *cmd) close(wglobal.conn); - tmp=ALLOC_N(char, strlen(cmd)+8); + tmp_len = strlen(cmd)+8; + tmp=ALLOC_N(char, tmp_len); if(tmp==NULL) die_err(); - sprintf(tmp, "exec %s", cmd); + snprintf(tmp, tmp_len, "exec %s", cmd); do_exec(tmp); } @@ -79,17 +81,19 @@ void setup_environ(int scr) { char *tmp, *ptr; char *display; + int tmp_len; display=XDisplayName(wglobal.display); - tmp=ALLOC_N(char, strlen(display)+16); + tmp_len = strlen(display)+16; + tmp=ALLOC_N(char, tmp_len); if(tmp==NULL){ warn_err(); return; } - sprintf(tmp, "DISPLAY=%s", display); + snprintf(tmp, tmp_len, "DISPLAY=%s", display); ptr=strchr(tmp, ':'); if(ptr!=NULL){ @@ -98,8 +102,10 @@ void setup_environ(int scr) *ptr='\0'; } - if(scr>=0) - sprintf(tmp+strlen(tmp), ".%i", scr); + if(scr>=0) { + int curr_len = strlen(tmp); + snprintf(tmp+curr_len, tmp_len-curr_len, ".%i", scr); + } putenv(tmp);