Hi, There are 2 problems with xtermset:
- EOF is not properly checked on unsigned char archs while loading and storing the configuration file - There is a boundary error while saving the configuration file, leading to a segfault that i can't reproduce on amd64 These problems vanish with the below diff, the runtime is fine on amd64 and macppc. While here i have removed a trailing whitespace in the Makefile. Comments/feedback are welcome, Charlène. Index: Makefile =================================================================== RCS file: /cvs/ports/x11/xtermset/Makefile,v retrieving revision 1.19 diff -u -p -u -p -r1.19 Makefile --- Makefile 12 Jul 2019 21:02:30 -0000 1.19 +++ Makefile 12 Oct 2020 06:01:44 -0000 @@ -3,13 +3,13 @@ COMMENT= dynamically change some settings of an xterm DISTNAME= xtermset-0.5.2 -REVISION= 2 +REVISION= 3 CATEGORIES= x11 # GPL PERMIT_PACKAGE= Yes -WANTLIB= c +WANTLIB= c MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=clts/} Index: patches/patch-src_term_c =================================================================== RCS file: patches/patch-src_term_c diff -N patches/patch-src_term_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_term_c 12 Oct 2020 06:01:44 -0000 @@ -0,0 +1,17 @@ +$OpenBSD$ + +Be sure we hit EOF while loading the configuration file on archs where char is +unsigned (ppc, arm) + +Index: src/term.c +--- src/term.c.orig ++++ src/term.c +@@ -116,7 +116,7 @@ void term_loadall() { + good_term *n; + char line[MAXTERMCHARS+3]; + int i,j=0,l,t=0; +- char c; ++ int c; + + fp = fopen(TERMSDIR "/" TERMSFILE,"r"); + Index: patches/patch-src_xtermset_c =================================================================== RCS file: patches/patch-src_xtermset_c diff -N patches/patch-src_xtermset_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_xtermset_c 12 Oct 2020 06:01:44 -0000 @@ -0,0 +1,20 @@ +$OpenBSD$ + +Fix a boundary error that caused a segfault while storing the configuration +file, also ensure EOF is properly matched on archs where char is unsigned (ppc, +arm) + +Index: src/xtermset.c +--- src/xtermset.c.orig ++++ src/xtermset.c +@@ -33,8 +33,8 @@ + + int main(int argc, char *argv[]) + { +- int i,style,code,switches[2]; +- char fn[2][MAXFNCHARS-1],c,*tok; ++ int i,c,style,code,switches[3]; ++ char fn[3][MAXFNCHARS-1],*tok; + char line[MAXOPTCHARS+10]; /* ? */ + FILE *rcfile=NULL; + argument *argptr = NULL;