X-Spam-Check-By: sourceware.org
Date: Tue, 6 Dec 2005 20:41:24 -0500 (EST)
From: Igor Pechtchanski <pechtcha@cs.nyu.edu>
Reply-To: cygwin@cygwin.com
To: Yitzchak Scott-Thoennes <sthoenna@efn.org>
cc: cygwin@cygwin.com
Subject: Re: [PATCH] cygcheck bug when listing services (Was Re: Parallel  writes to a single FIFO do not queue, and deadlock cygwin)
In-Reply-To: <20051207000050.GB5452@efn.org>
Message-ID: <Pine.GSO.4.63.0512062038150.35@slinky.cs.nyu.edu>
References: <5a97ceb0512042223i404ebffeuff5546e2345df965@mail.gmail.com>  <Pine.GSO.4.63.0512050924150.13495@slinky.cs.nyu.edu> <20051207000050.GB5452@efn.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
Precedence: bulk
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

On Tue, 6 Dec 2005, Yitzchak Scott-Thoennes wrote:

> On Mon, Dec 05, 2005 at 09:40:01AM -0500, Igor Pechtchanski wrote:
> > Running cygcheck under strace shows that after listing all the available
> > services, it invokes "cygrunsrv --query grunsrv.exe --list", which results
> > in the above message.  I think this may be because the output of
> > "cygrunsrv --list" doesn't contain a trailing '\n', and so strtok gets
> > confused.  The following patch (against a slightly older cygcheck) fixes
> > it for me, but I haven't had the time to test it extensively:
> > [snip]
> > -      buf[nchars] = 0;
> > +      buf[nchars] = buf[nchars+1] = 0;
>
> That needs a comment in the code.

Fair enough:

Index: cygcheck.cc
===================================================================
RCS file: /cvs/src/src/winsup/utils/cygcheck.cc,v
retrieving revision 1.77
diff -u -p -r1.77 cygcheck.cc
--- cygcheck.cc 17 Aug 2005 00:52:43 -0000      1.77
+++ cygcheck.cc 7 Dec 2005 01:38:07 -0000
@@ -950,8 +950,10 @@ dump_sysinfo_services ()
   else
     {
       /* read the output of --list, and then run --query for each service */
-      size_t nchars = fread ((void *) buf, 1, sizeof (buf) - 1, f);
-      buf[nchars] = 0;
+      size_t nchars = fread ((void *) buf, 1, sizeof (buf) - 2, f);
+      /* Add two nulls to avoid confusing strtok() when the trailing separator
+         is missing */
+      buf[nchars] = buf[nchars+1] = 0;
       pclose (f);

       if (nchars > 0)

I'll even add a ChangeLog of sorts :-)

2005-12-06  Igor Pechtchanski  <pechtcha@cs.nyu.edu>

	* cygcheck.cc (dump_sysinfo_services): Add an extra NUL to mollify
	strtok() when the trailing newline is missing.

HTH,
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

If there's any real truth it's that the entire multidimensional infinity
of the Universe is almost certainly being run by a bunch of maniacs. /DA

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

