[net.news.b] 2.10.1 "Distribution" line handling bug

ado@elsie.UUCP (08/22/84)

The logic for handling "Distribution" lines in 2.10.1 news can cause problems
if an article is posted to a news group that's not being subscribed to by a
neighboring site and includes a "Distribution" line mentioning a news group
that IS subscribed to by the neighboring site.

To see the bug, you may need the cooperation of a neighboring site.
On both YOUR site and the neighboring site, ensure that the "/usr/lib/news/sys"
line for the neighboring system contains a "!" component in the news group list;
for example:
	neighbor:net,fa,mod,na,usa,to.neighbor,!net.vvs:U
(where "neighbor" stands for the actual name of the neighbor site throughout).
Then post an article to the "!" group, including in the header of the article a
	Distribution: to.neighbor
line (where you replace "neighbor" with the actual name of the neighbor site).
The article will be shipped to the neighbor site;
the neighbor site will promptly reject it and
send an annoying letter about the rejection back to your site.
IF YOU CHANGED THE "/usr/lib/news/sys" FILES,
REMEMBER TO CHANGE THEM BACK AFTER THIS TEST.

Fixing the bug involves changes to two places in "ifuncs.c".
Here's the relevant "diff -c" output:

*** ifuncs.c	Wed Aug 22 07:24:28 1984
--- 2.10.1/ifuncs.c	Mon Nov 14 14:16:27 1983
***************
*** 32,40
  	if (h.distribution[0])
- #ifdef OLDVERSION
  		strcpy(h.nbuf, h.distribution);
- #else
- 		ngcat(h.distribution);
- #endif
  	ngcat(h.nbuf);
  
  	 /* break path into list of systems. */

--- 31,36 -----
  	fclose(fp);
  	if (h.distribution[0])
  		strcpy(h.nbuf, h.distribution);
  	ngcat(h.nbuf);
  
  	 /* break path into list of systems. */
***************
*** 61,70
  			while (*hptr++ != '\0')
  				;
  		}
- #ifndef OLDVERSION
- 		if (h.distribution[0] && !ngmatch(h.distribution, srec.s_nbuf))
- 			continue;
- #endif
  		if (ngmatch(h.nbuf, srec.s_nbuf)) {
  			transmit(&srec, xfopen(ARTICLE, "r"), 1);
  		}

--- 57,62 -----
  			while (*hptr++ != '\0')
  				;
  		}
  		if (ngmatch(h.nbuf, srec.s_nbuf)) {
  			transmit(&srec, xfopen(ARTICLE, "r"), 1);
  		}

--
	...decvax!seismo!umcp-cs!elsie!ado	(301) 496-5688
	(DEC, VAX and Elsie are Digital Equipment Corp. and Borden's trademarks)