diff --git a/1987/wall/README.md b/1987/wall/README.md index 69d9ec4a3..651e7c5f4 100644 --- a/1987/wall/README.md +++ b/1987/wall/README.md @@ -9,6 +9,17 @@ Panorama City, CA 91402 USA make all +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) made this entry safer +by changing `gets()` to `fgets()`. Thank you Cody for your assistance! If you +wish for the original unsafe version you can make the following change: + + -signal())();char*V,cm,D['x'],M='\n',I;L(MV,V,(c+='d',ix))m(x){v) + +signal())();char*V,cm,D['x'],M='\n',I,*gets();L(MV,V,(c+='d',ix))m(x){v) + signal(X/'I',vi[x]);}d(x)char*x;{v)write(i,x,i);}L(MC,V,M+I)xv(){c>=i?m( + c/M/M+M):(d(&M),m(cm));}L(mi,V+cm,M)L(md,V,M)MM(){c=c*M%X;V-=cm;m(ix);} + -LXX(){fgets(D,'x',stdin)||(vi[iv])();c=atoi(D);while(c>=X){c-=X;d("m");}V="ivxlcdm" + +LXX(){gets(D)||(vi[iv])();c=atoi(D);while(c>=X){c-=X;d("m");}V="ivxlcdm" + ## To run: diff --git a/1987/wall/wall.c b/1987/wall/wall.c index 8ba1c5458..9aeadf78e 100644 --- a/1987/wall/wall.c +++ b/1987/wall/wall.c @@ -4,10 +4,10 @@ #define L(c,l,i)c(){d(l);m(i);} #include int*cc,c,i,ix='\t',exit(),X='\n'*'\d';XI(VI)XI(xi)extern(*vi[])(),(* -signal())();char*V,cm,D['x'],M='\n',I,*gets();L(MV,V,(c+='d',ix))m(x){v) +signal())();char*V,cm,D['x'],M='\n',I;L(MV,V,(c+='d',ix))m(x){v) signal(X/'I',vi[x]);}d(x)char*x;{v)write(i,x,i);}L(MC,V,M+I)xv(){c>=i?m( c/M/M+M):(d(&M),m(cm));}L(mi,V+cm,M)L(md,V,M)MM(){c=c*M%X;V-=cm;m(ix);} -LXX(){gets(D)||(vi[iv])();c=atoi(D);while(c>=X){c-=X;d("m");}V="ivxlcdm" +LXX(){fgets(D,'x',stdin)||(vi[iv])();c=atoi(D);while(c>=X){c-=X;d("m");}V="ivxlcdm" +iv;m(ix);}LV(){c-=c;while((i=cc[*D=getchar()])>-I)i?(c?(c