Merge pull request #200 from xexyl/1994-schnitzi

Fix segfault in 1994/schnitzi - use fgets()
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-03-28 14:46:12 -07:00
commit 89419b0a6e
2 files changed
+25 -11

No files matched your search

+21 -7
View File
@@ -10,22 +10,36 @@
make all
### To run
## To run:
./schnitzi < textfile
## Judges' comments
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the entry to not
overflow the buffer (and segfault) by changing the call of `gets()` to
`fgets()`. He also increased the buffer size. Prior to this fix one could not
redirect the Makefile into this program, as an example problem. Thank you Cody
for your assistance!
Try:
## Try:
./schnitzi < /etc/motd
./schnitzi < /etc/passwd
## Judges' comments:
Try:
./schnitzi < schnitzi.c
Compare the output of the program with its source. Sure the output
is different, but there is more than meets the diff's eye. Can you
find out why?
Compare the output of the program with its source. Sure the output
is different, but there is more than meets the `diff`'s eye. Can you
find out why?
## Author's comments
## Author's comments:
SPOILER:
+4 -4
View File
@@ -20,12 +20,12 @@ h mh111 de{l) +di (+'( d+% c n+
*/ n = 0 ;
main ( ) {
char v [
100 ] , s;
int t[100 ] ,
u[100 ] ; u
1000 ] , s;
int t[100 ] ,
u[100 ] ; u
[ 0
]=ftell(stdin ) ;
while(gets (v ) )
while(fgets(v,100,stdin )&&((v[strlen(v)-1]='\0',1)) )
{t [ r ]=
strlen (
v);y=