diff options
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | st.c | 15 | 
2 files changed, 8 insertions, 9 deletions
| @@ -19,7 +19,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft \         $(shell pkg-config --libs freetype2)  # flags -CPPFLAGS = -DVERSION=\"${VERSION}\" +CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE -D_XOPEN_SOURCE=600  CFLAGS += -g -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}  LDFLAGS += -g ${LIBS} @@ -1,5 +1,4 @@  /* See LICENSE for licence details. */ -#define _XOPEN_SOURCE 600  #include <ctype.h>  #include <errno.h>  #include <fcntl.h> @@ -1304,6 +1303,7 @@ csiparse(void) {  		p++;  	} +	csiescseq.buf[csiescseq.len] = '\0';  	while(p < csiescseq.buf+csiescseq.len) {  		np = NULL;  		v = strtol(p, &np, 10); @@ -1925,14 +1925,12 @@ strhandle(void) {  void  strparse(void) { -	char *p = strescseq.buf, *sp; +	char *p = strescseq.buf; +	strescseq.narg = 0;  	strescseq.buf[strescseq.len] = '\0'; -	for(p = strtok_r(p, ";", &sp); p; p = strtok_r(NULL, ";", &sp)) { -		if(strescseq.narg == STR_ARG_SIZ) -			return; -		strescseq.args[strescseq.narg++] = p; -	} +	while(p && strescseq.narg < STR_ARG_SIZ) +		strescseq.args[strescseq.narg++] = strsep(&p, ";");  }  void @@ -2109,7 +2107,8 @@ tputc(char *c, int len) {  		if(term.esc & ESC_CSI) {  			csiescseq.buf[csiescseq.len++] = ascii;  			if(BETWEEN(ascii, 0x40, 0x7E) -					|| csiescseq.len >= ESC_BUF_SIZ) { +					|| csiescseq.len >= \ +					sizeof(csiescseq.buf)-1) {  				term.esc = 0;  				csiparse();  				csihandle(); | 
