[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: assertion failure in "cvs co" with /./ (CVS 1.12.13)

From: Mark D. Baushke
Subject: Re: assertion failure in "cvs co" with /./ (CVS 1.12.13)
Date: Sat, 26 Aug 2006 12:42:29 -0700

Hi Paul,

Paul Eggert <eggert@CS.UCLA.EDU> writes:

> This is with CVS 1.12.13, which I built on Debian stable with GCC 4.1.1.
> Here's how to reproduce the failure:
> $ cvs -d :pserver:anonymous@cvs.savannah.gnu.org:/sources/gnulib co -p 
> gnulib/./doc/fdl.texi
> cvs [checkout aborted]: received abort signal
> cvs: recurse.c:716: do_recursion: Assertion `strstr (repository, "/./") == 
> ((void *)0)' failed.

Thank you for the bug report. It appears that the change first appeared
in recurse revision 1.79 and was backported to cvs 1.11.x as well.

Here is the ChangeLog entry:

2003-04-02  Derek Price  <derek@ximbiot.com>

        * recurse.c (do_recursion): Use strstr("/./") rather than strchr('.')
        to catch only indirections in paths and not directory names with dots
        in them.
        (Report from Pavel Roskin <proski@gnu.org>.)

        * sanity.sh (multiroot): Put a dot in the CVSROOT_DIRNAMEs.
        (dottedroot): New test.
        (Based on a script from Pavel Roskin <proski@gnu.org>.)

A copy of Pavel's original report is after my .signature. Derek Price is
the one who created the fix and may know if it should be handled in some
other manner to avoid triggering security checks.

        -- Mark

 ------- original bug report -------
Date: Wed, 2 Apr 2003 13:50:19 -0500 (EST)
From: Pavel Roskin <proski@gnu.org>
X-X-Sender: proski@marabou.research.att.com
To: bug-cvs@gnu.org, Derek Price <derek@ximbiot.com>
Subject: CVS CVS: Assertion failed on checkout


Today's CVS crashes on checkout if CVSROOT has "." in its name:

cvs: recurse.c:652: do_recursion: Assertion `(__extension__
(__builtin_constant_p ('.') && ('.') == '\0' ? (char *) __rawmemchr
(repository, '.') : strchr (repository, '.'))) == ((void *)0)' failed.

Test case is attached.  Run it in an empty directory with any name.

Pavel Roskin
[1. text/plain; test]...

rm -rf cvs.root
rm -rf dir1
rm -rf module
cvs -d $TOP/cvs.root init
mkdir $TOP/dir1
mkdir $TOP/dir1/dir2
echo version1 >$TOP/dir1/dir2/file1
cd $TOP/dir1
cvs -d $TOP/cvs.root import -m "" module1 AUTHOR INITIAL
cd $TOP
cvs -d $TOP/cvs.root co -r Branch module1
Bug-cvs mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]