Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site elsie.UUCP
Path: utzoo!linus!decvax!decwrl!amd!noao!hao!seismo!umcp-cs!cvl!elsie!ado
From: ado@elsie.UUCP
Newsgroups: net.news.b
Subject: 2.10.1 "Distribution" line handling bug (with fix)
Message-ID: <1160@elsie.UUCP>
Date: Wed, 22-Aug-84 07:59:05 EDT
Article-I.D.: elsie.1160
Posted: Wed Aug 22 07:59:05 1984
Date-Received: Thu, 23-Aug-84 07:35:43 EDT
Organization: NIH-LEC, Bethesda, MD
Lines: 68

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)