[net.sources.bugs] Bug in patch

msb@lsuc.UUCP (Mark Brader) (03/01/85)

There's a bug in Larry Wall's generally lovely utility "patch".
When he's dumping out the lines "leading up to" the context diff,
he passes the lines themselves as formats to fprintf.  This fails if they
are very long or if they contain '%'.

The fix is very simple.

If this message has a long enough news path, you may need to strip off
the netnews header before you can use patch to install the fix, though...

*** patch.c.old	Sat Dec 29 21:10:06 1984
--- patch.c	Fri Mar  1 00:57:44 1985
***************
*** 1165,1171
  	while (ftell(pfp) < file_pos) {
  	    ret = fgets(buf,sizeof buf,pfp);
  	    assert(ret != Nullch);
! 	    say(buf);
  	}
  	say("--------------------------\n");
      }

--- 1165,1171 -----
  	while (ftell(pfp) < file_pos) {
  	    ret = fgets(buf,sizeof buf,pfp);
  	    assert(ret != Nullch);
! 	    say("%s",buf);
  	}
  	say("--------------------------\n");
      }


Mark Brader