Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Oct 2001 04:20:02 -0700 (PDT)
From:      Peter Pentchev <roam@ringlet.net>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/30968: whois client bug w/ .biz
Message-ID:  <200110021120.f92BK2L92453@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/30968; it has been noted by GNATS.

From: Peter Pentchev <roam@ringlet.net>
To: Sean Kelly <smkelly@zombie.org>
Cc: FreeBSD-gnats-submit@freebsd.org, douglas@min.net
Subject: Re: bin/30968: whois client bug w/ .biz
Date: Tue, 2 Oct 2001 14:06:32 +0300

 On Mon, Oct 01, 2001 at 03:25:31PM -0500, Sean Kelly wrote:
 > 
 > >Number:         30968
 > >Category:       bin
 > >Synopsis:       whois client bug w/ .biz
 > >Responsible:    freebsd-bugs
 > >State:          open
 > >Originator:     Sean Kelly
 > >Release:        FreeBSD 4.4-STABLE i386
 > >Organization:
 > >Environment:
 > System: FreeBSD edgemaster.zombie.org 4.4-STABLE FreeBSD 4.4-STABLE #1: Sat Sep 29 22:12:48 CDT 2001 root@edgemaster.zombie.org:/usr/obj/usr/src/sys/EDGEMASTER i386
 > 	Multiple machines, /usr/src/usr.bin/whois/whois.c version 1.15.2.4
 > >Description:
 > 	The whois client mangles output when doing specific searches and
 > 	presented with specific results, specifically with results lacking
 > 	a final CR.
 > >How-To-Repeat:
 > 	First, do 'whois haha.biz'.  Notice the odd output?
 > 	Now, do 'whois haha.biz|cat'.  Notice the different output?
 
 These are both due to the fact that, as you noticed, the final CR
 is missing.  The whois(1) code assumes incorrectly that fgetln(3)
 will always return a isspace(3)-terminated string.  This is not
 the case, as noted in a prominent warning on the fgetln(3) manual page.
 As a result, an out-of-bound string access is made.  For some reason,
 when the output is sent to a terminal, that out-of-bound access reads
 the previously read contents of /etc/services (whois(1) needs that
 to determine which port the whois/tcp service is on).
 
 Can you try the attached patch?
 
 G'luck,
 Peter
 
 -- 
 This sentence no verb.
 
 Index: src/usr.bin/whois/whois.c
 ===================================================================
 RCS file: /home/ncvs/src/usr.bin/whois/whois.c,v
 retrieving revision 1.15.2.4
 diff -u -r1.15.2.4 whois.c
 --- src/usr.bin/whois/whois.c	2001/08/02 02:21:24	1.15.2.4
 +++ src/usr.bin/whois/whois.c	2001/10/02 16:15:22
 @@ -51,6 +51,7 @@
  #include <arpa/inet.h>
  #include <ctype.h>
  #include <err.h>
 +#include <errno.h>
  #include <netdb.h>
  #include <stdarg.h>
  #include <stdio.h>
 @@ -267,6 +268,17 @@
  	nhost = NULL;
  	nomatch = 0;
  	while ((buf = fgetln(sfi, &len)) != NULL) {
 +		if ((len == 0) || !isspace(buf[len - 1])) {
 +			char *newbuf;
 +
 +			newbuf = realloc(buf, len + 1);
 +			if (newbuf == NULL) {
 +				errno = ENOMEM;
 +				err(1, "reallocating");
 +			}
 +			newbuf[len] = '\0';
 +			buf = newbuf;
 +		}
  		while (len && isspace(buf[len - 1]))
  			buf[--len] = '\0';
  

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110021120.f92BK2L92453>