🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.bugs
Article #675

CVS 1.2 bug: CVS commit dumps core on long file lists

#675
From: Lowell Skoog
Date: Wed, 29 May 1991 20:41
65 lines
2677 bytes
Symptom:
    When committing a large number of files (the list of file names
    exceeds 1000 characters), CVS dumps core before putting the user
    in an editor to enter a log message.

Work-around:
    Avoid using `cvs commit -a' when many files need to be
    committed.  Instead, commit the files in smaller groups.

Cause:
    During the commit process, CVS collects lists of all files that
    have been modified, added, removed, etc.  It puts these lists in
    a temporary file then allows the user to enter a log message.
    When creating the temporary file, CVS uses the fmt() function to
    break up the file lists into reasonable sized lines to avoid line
    wrap.  Unfortunately, the fmt() function provides space (in a
    fixed array) for a line of length MAXLINELEN (1000 bytes), while
    each list can be of length MAXLISTLEN (20000 bytes).  So, the
    potential length of a file list is longer than fmt() can handle.

Solution:
    Change the "line" array in fmt() to be of size MAXLISTLEN.

A patch file is attached below.  A copy of this message has been sent
to berliner@sun.com.

----------------------------------------------------------------------
Lowell Skoog  M/S 223B                             lowell@tc.fluke.COM
John Fluke Mfg. Co. Inc.  {uunet,uw-beaver,microsoft,sun}!fluke!lowell
P.O. Box 9090
Everett, WA, USA  98206-9090                            (206) 356-5283
----------------------------------------------------------------------

diff -c cvs/src/commit.c:1.1.1.1 cvs/src/commit.c:1.3
*** cvs/src/commit.c:1.1.1.1	Wed May 29 13:33:03 1991
--- cvs/src/commit.c	Wed May 29 13:33:03 1991
***************
*** 1,5 ****
  #ifndef lint
! static char rcsid[] = "$Id: commit.c,v 1.1.1.1 1991/02/22 16:33:40 lowell Exp $";
  #endif !lint
  
  /*
--- 1,5 ----
  #ifndef lint
! static char rcsid[] = "$Id: commit.c,v 1.3 1991/05/29 19:41:40 lowell Exp $";
  #endif !lint
  
  /*
***************
*** 517,523 ****
      char *instring;
      char *prefix;
  {
!     char line[MAXLINELEN];
      char *cp;
      int col;
  
--- 517,523 ----
      char *instring;
      char *prefix;
  {
!     char line[MAXLISTLEN];	/* UNOFFICIAL bug fix, was MAXLINELEN */
      char *cp;
      int col;
Technical Details
Message-ID: <1991May29.204140.20832@tc.fluke.COM>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!crdgw1!uunet!zephyr.ens.tek.com!uw-beaver!fluke!lowell

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!crdgw1!uunet!zephyr.ens.tek.com!uw-beaver!fluke!lowell
From: lowell@tc.fluke.COM (Lowell Skoog)
Newsgroups: comp.sources.bugs
Subject: CVS 1.2 bug: CVS commit dumps core on long file lists
Message-ID: <1991May29.204140.20832@tc.fluke.COM>
Date: 29 May 91 20:41:40 GMT
Organization: John Fluke Mfg. Co., Inc., Everett, WA
Lines: 65