diff -Nru /n/sources/plan9/sys/src/libregexp/regcomp.c /sys/src/libregexp/regcomp.c --- /n/sources/plan9/sys/src/libregexp/regcomp.c Fri Jul 23 21:16:07 2010 +++ /sys/src/libregexp/regcomp.c Sun Aug 9 00:00:00 2015 @@ -113,7 +113,7 @@ while(*s) *cp++ = *s++; *cp++ = c; - *cp = '\0'; + *cp = '\0'; rcerror(buf); } @@ -121,7 +121,7 @@ cant(char *s) { char buf[100]; - strcpy(buf, "can't happen: "); + strncpy(buf, "can't happen: ", sizeof(buf)); strcat(buf, s); rcerror(buf); } diff -Nru /n/sources/plan9/sys/src/libregexp/regerror.c /sys/src/libregexp/regerror.c --- /n/sources/plan9/sys/src/libregexp/regerror.c Sun Dec 12 01:22:31 1999 +++ /sys/src/libregexp/regerror.c Sun Aug 9 00:00:00 2015 @@ -7,7 +7,7 @@ { char buf[132]; - strcpy(buf, "regerror: "); + strncpy(buf, "regerror: ", sizeof(buf)); strcat(buf, s); strcat(buf, "\n"); write(2, buf, strlen(buf)); diff -Nru /n/sources/plan9/sys/src/libregexp/regexec.c /sys/src/libregexp/regexec.c --- /n/sources/plan9/sys/src/libregexp/regexec.c Sat Jan 12 20:47:52 2008 +++ /sys/src/libregexp/regexec.c Sun Aug 9 00:00:00 2015 @@ -172,7 +172,7 @@ return -1; relist1 = malloc(BIGLISTSIZE*sizeof(Relist)); if(relist1 == nil){ - free(relist1); + free(relist0); return -1; } j->relist[0] = relist0; diff -Nru /n/sources/plan9/sys/src/libregexp/rregsub.c /sys/src/libregexp/rregsub.c --- /n/sources/plan9/sys/src/libregexp/rregsub.c Wed Apr 25 19:01:33 2001 +++ /sys/src/libregexp/rregsub.c Sun Aug 9 00:00:00 2015 @@ -28,7 +28,7 @@ case '8': case '9': i = *sp-'0'; - if(mp[i].rsp != 0 && mp!=0 && ms>i) + if(mp!=0 && mp[i].rsp != 0 && ms>i) for(ssp = mp[i].rsp; ssp < mp[i].rep; ssp++) @@ -47,9 +47,8 @@ *dp++ = *sp; break; } - }else if(*sp == '&'){ + }else if(*sp == '&'){ if(mp[0].rsp != 0 && mp!=0 && ms>0) - if(mp[0].rsp != 0) for(ssp = mp[0].rsp; ssp < mp[0].rep; ssp++) if(dp < ep)