* add cvs

This commit is contained in:
Alexander Baldeck 2020-03-06 14:43:16 +01:00
parent 9e51a890c3
commit 66b7ddcd8e
19 changed files with 850 additions and 0 deletions

92
cvs/PKGBUILD Normal file
View File

@ -0,0 +1,92 @@
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
# Maintainer: Lukas Fleischer <lfleischer@archlinux.org>
# Contributor: dorphell <dorphell@archlinux.org>
# Contributor: Dan McGee <dan@archlinux.org>
pkgname=cvs
pkgver=1.11.23
pkgrel=12
pkgdesc="Concurrent Versions System - a source control system"
arch=(x86_64 powerpc64le)
url="http://cvs.nongnu.org/"
license=('GPL')
depends=('krb5' 'zlib')
makedepends=('vim')
optdepends=('openssh: for using cvs over ssh'
'inetutils: for using cvs over rsh')
source=(ftp://ftp.gnu.org/non-gnu/cvs/source/stable/${pkgver}/${pkgname}-${pkgver}.tar.bz2
cvs-1.11.19-abortabort.patch
cvs-1.11.19-comp.patch
cvs-1.11.19-extzlib.patch
cvs-1.11.19-logmsg.patch
cvs-1.11.19-netbsd-tag.patch
cvs-1.11.19-tagname.patch
cvs-1.11.19-tmp.patch
cvs-1.11.21-diff-kk.patch
cvs-1.11.21-diff.patch
cvs-1.11.21-sort.patch
cvs-1.11.23-cve-2010-3846.patch
cvs-1.11.23-cvspass.patch
cvs-1.11.23-doc-Add-mandatory-argument-to-sp.patch
cvs-1.11.23-getline64.patch
cvs-1.11.23-make_make_check_sanity_testing_verbose.patch
cvs-1.11.23-Pass-compilation-with-Wformat-security.patch
cvs-1.11.23-remove_undefined_date_from_cvs_1_header.patch
cvs-1.11.23-sanity.patch)
sha256sums=('400f51b59d85116e79b844f2d5dbbad4759442a789b401a94aa5052c3d7a4aa9'
'a63bd4d696d4785f3b16146c9a8e57b7f0b2fcb648b9b3b43b138857e28e23f4'
'973d2c6682e2e4b9b9a80c0aec7dd436a180adbc06c6ed6914c349627cfb9a6e'
'0587ac3753d1257fa6d22557fa077178ee1ec004178c0a0348720e8171b1e942'
'f97ea853f2c7cc6cc0364e1d0ca148be6229c43327417c32a4b253d74bf9fd76'
'f8e544879d3ca5589c09f56678cd0a5166b727f65ebb4daceaeb70bd700f5f6b'
'0cf5fa737444344f76c7b361a60e6736ccff7887b5157fb1b2ddd6bd133cc4e5'
'1ff4ae9d167f5449fbd1c8ae3b489da73b2806df3b3d8795711deffba7856953'
'd924459e46ea4fb438d0f71b0d87bd528b132bc53224dbfb588b090633f2fea9'
'70af9380ea697a9ffcca8b33bd3d591ee53e23da250462dd690fca357600fab6'
'775feb4094f638bf30a47be5b6e098266879ba6592d15d3694fff9365fb65b2d'
'c6506d0a5efc7b0cab6415f26e070ec214fb9781fac8d295506f4d0825431a8f'
'14a356126159097a5d2d0462547eb2853bf331d8bc7d850be245f751ec17965e'
'30f68fc13474db4468d22fbdbe771b5f107217cdd2513c058e07de8fe7300d01'
'9126d7992ace943980ad8a10d5a09aeb6f1eeeb9b921fc796fe31de7b1c220cf'
'9eeb10fcee6a131210c16978f2eb91fad3e7a8df7fc579bda0ea3a4108c78e1d'
'54e2ed54d893f14441cf0242493719d8361f54209eefc88b7ac3b9c07ae6625a'
'887d09d266a796582b046ef36c80792a1b244aea714cd9280f6928cef7dc6698'
'f661dbd97518b12d63b1cec2f3e6f1ab8219aeddfd1e96e7e505f38ffb04a4b2')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
unset EDITOR VISUAL
patch -Np1 < ../cvs-1.11.19-extzlib.patch
patch -Np1 < ../cvs-1.11.23-getline64.patch
# CVE-2010-3864, https://www.redhat.com/security/data/cve/CVE-2010-3846.html
patch -Np1 < ../cvs-1.11.23-cve-2010-3846.patch
patch -Np1 < ../cvs-1.11.19-abortabort.patch
patch -Np1 < ../cvs-1.11.19-comp.patch
patch -Np1 < ../cvs-1.11.19-netbsd-tag.patch
patch -Np1 < ../cvs-1.11.19-tagname.patch
patch -Np1 < ../cvs-1.11.19-tmp.patch
patch -Np1 < ../cvs-1.11.21-diff-kk.patch
patch -Np1 < ../cvs-1.11.21-diff.patch
patch -Np1 < ../cvs-1.11.21-sort.patch
patch -Np1 < ../cvs-1.11.23-cvspass.patch
patch -Np1 < ../cvs-1.11.19-logmsg.patch
patch -Np1 < ../cvs-1.11.23-doc-Add-mandatory-argument-to-sp.patch
patch -Np1 < ../cvs-1.11.23-make_make_check_sanity_testing_verbose.patch
patch -Np1 < ../cvs-1.11.23-Pass-compilation-with-Wformat-security.patch
patch -Np1 < ../cvs-1.11.23-remove_undefined_date_from_cvs_1_header.patch
patch -Np1 < ../cvs-1.11.23-sanity.patch
sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.in
find . -name Makefile.am | xargs sed -i -e 's/^INCLUDES/AM_CPPFLAGS/'
AUTOMAKE='automake --add-missing' autoreconf
./configure --prefix=/usr
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
rm "${pkgdir}"/usr/share/info/dir
}

View File

@ -0,0 +1,70 @@
--- cvs-1.11.19/src/server.c.old3 2004-09-24 21:59:08.000000000 +0200
+++ cvs-1.11.19/src/server.c 2005-02-28 13:09:22.000000000 +0100
@@ -4900,6 +4900,15 @@
int status;
int save_noexec;
+#ifndef DONT_USE_SIGNALS
+#ifdef SIGABRT
+ /* Need to deregister the SIGABRT handler so that if an assertion
+ fails and calls abort while we're cleaning up, we won't
+ infinitely recurse in the cleanup function. */
+ SIG_deregister(SIGABRT, server_cleanup);
+#endif
+#endif /* !DONT_USE_SIGNALS */
+
if (buf_to_net != NULL)
{
/* Since we're done, go ahead and put BUF_TO_NET back into blocking
--- cvs-1.11.19/src/main.c.old3 2005-02-03 15:50:51.000000000 +0100
+++ cvs-1.11.19/src/main.c 2005-02-28 13:02:52.000000000 +0100
@@ -341,6 +341,13 @@
const char *name;
char temp[10];
+#ifdef SIGABRT
+ /* Need to deregister the SIGABRT handler so that if an assertion
+ fails and calls abort while we're cleaning up, we won't
+ infinitely recurse in the cleanup function. */
+ SIG_deregister(SIGABRT, main_cleanup);
+#endif
+
switch (sig)
{
#ifdef SIGABRT
--- cvs-1.11.19/src/rcs.c.old3 2005-01-31 23:15:08.000000000 +0100
+++ cvs-1.11.19/src/rcs.c 2005-02-28 13:06:06.000000000 +0100
@@ -8314,6 +8314,15 @@
called from a signal handler, so we don't know whether the
files got created. */
+#ifndef DONT_USE_SIGNALS
+#ifdef SIGABRT
+ /* Need to deregister the SIGABRT handler so that if an assertion
+ fails and calls abort while we're cleaning up, we won't
+ infinitely recurse in the cleanup function. */
+ SIG_deregister(SIGABRT, rcs_cleanup);
+#endif
+#endif /* !DONT_USE_SIGNALS */
+
/* FIXME: Do not perform buffered I/O from an interrupt handler like
this (via error). However, I'm leaving the error-calling code there
in the hope that on the rare occasion the error call is actually made
--- cvs-1.11.19/src/patch.c.old3 2005-01-31 23:15:02.000000000 +0100
+++ cvs-1.11.19/src/patch.c 2005-02-28 13:04:16.000000000 +0100
@@ -796,6 +796,15 @@
called from a signal handler, without SIG_begincrsect, so
we don't know whether the files got created. */
+#ifndef DONT_USE_SIGNALS
+#ifdef SIGABRT
+ /* Need to deregister the SIGABRT handler so that if an assertion
+ fails and calls abort while we're cleaning up, we won't
+ infinitely recurse in the cleanup function. */
+ SIG_deregister(SIGABRT, patch_cleanup);
+#endif
+#endif /* !DONT_USE_SIGNALS */
+
if (tmpfile1 != NULL)
{
if (unlink_file (tmpfile1) < 0

View File

@ -0,0 +1,11 @@
--- cvs-1.11.19/src/rcs.c.old 2005-03-17 11:21:18.000000000 +0100
+++ cvs-1.11.19/src/rcs.c 2005-03-17 11:21:56.000000000 +0100
@@ -138,7 +138,7 @@
string comparisons. This macro speeds things up a bit by skipping
the function call when the first characters are different. It
evaluates its arguments multiple times. */
-#define STREQ(a, b) (*(char *)(a) == *(char *)(b) && strcmp ((a), (b)) == 0)
+#define STREQ(a, b) ((a) != NULL && (b) != NULL && *(char *)(a) == *(char *)(b) && strcmp ((a), (b)) == 0)
/*
* We don't want to use isspace() from the C library because:

View File

@ -0,0 +1,44 @@
--- cvs-1.11.19/configure.in.old.old4 2005-02-01 00:10:49.000000000 +0100
+++ cvs-1.11.19/configure.in 2005-02-28 13:27:10.000000000 +0100
@@ -1040,8 +1040,8 @@
tools/Makefile \
vms/Makefile \
windows-NT/Makefile \
- windows-NT/SCC/Makefile \
- zlib/Makefile])
+ windows-NT/SCC/Makefile
+ ])
dnl and we're done
AC_OUTPUT
--- cvs-1.11.19/Makefile.am.old.old4 2004-11-11 23:30:36.000000000 +0100
+++ cvs-1.11.19/Makefile.am 2005-02-28 13:25:32.000000000 +0100
@@ -17,7 +17,7 @@
## Subdirectories to run make in for the primary targets.
# Unix source subdirs, where we'll want to run lint and etags:
# This is a legacy variable from b4 Automake
-USOURCE_SUBDIRS = lib zlib diff src
+USOURCE_SUBDIRS = lib diff src
# All other subdirs:
SUBDIRS = $(USOURCE_SUBDIRS) man doc contrib tools \
windows-NT os2 emx vms
--- cvs-1.11.19/src/Makefile.am.old.old4 2005-01-31 23:07:35.000000000 +0100
+++ cvs-1.11.19/src/Makefile.am 2005-02-28 13:24:26.000000000 +0100
@@ -24,7 +24,7 @@
# try and remove naming ocnflicts and fix Automake to allow particular includes
# to be attached only to particular object files. Short term fix is either or.
##INCLUDES = -I. -I.. -I$(srcdir) -I$(top_srcdir)/lib
-INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/diff -I$(top_srcdir)/zlib $(includeopt)
+INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/diff $(includeopt)
bin_PROGRAMS = cvs
bin_SCRIPTS = cvsbug
@@ -105,7 +105,7 @@
cvs_LDADD = \
../diff/libdiff.a \
../lib/libcvs.a \
- ../zlib/libz.a
+ -lz
# extra clean targets
# wish this could be distclean-hdr-local but it's not part of automake

View File

@ -0,0 +1,20 @@
--- cvs-1.11.19/src/logmsg.c.old 2005-03-09 10:45:50.000000000 +0100
+++ cvs-1.11.19/src/logmsg.c 2005-03-09 10:46:36.000000000 +0100
@@ -230,6 +230,8 @@
if ((*messagep)[0] == '\0' ||
(*messagep)[strlen (*messagep) - 1] != '\n')
(void) fprintf (fp, "\n");
+ } else {
+ (void) fprintf (fp, "\n");
}
if (repository != NULL)
@@ -271,7 +273,7 @@
}
(void) fprintf (fp,
- "\n%s----------------------------------------------------------------------\n",
+ "%s----------------------------------------------------------------------\n",
CVSEDITPREFIX);
(void) fprintf (fp,
"%sEnter Log. Lines beginning with `%.*s' are removed automatically\n%s\n",

View File

@ -0,0 +1,28 @@
--- cvs-1.11.19/src/logmsg.c.old2 2005-02-28 11:49:35.000000000 +0100
+++ cvs-1.11.19/src/logmsg.c 2005-02-28 12:58:16.000000000 +0100
@@ -690,6 +690,15 @@
strlen (str_list) + strlen (p->key) + 5);
(void) strcat (str_list, p->key);
break;
+ case 't':
+ str_list =
+ xrealloc (str_list,
+ (strlen (str_list)
+ + (li->tag ? strlen (li->tag) : 0)
+ + 10)
+ );
+ (void) strcat (str_list, (li->tag ? li->tag : ""));
+ break;
case 'V':
str_list =
xrealloc (str_list,
--- cvs-1.11.19/src/mkmodules.c.old2 2005-01-31 23:14:17.000000000 +0100
+++ cvs-1.11.19/src/mkmodules.c 2005-02-28 12:59:03.000000000 +0100
@@ -74,6 +74,7 @@
"# s = file name\n",
"# V = old version number (pre-checkin)\n",
"# v = new version number (post-checkin)\n",
+ "# t = tag or branch name\n",
"#\n",
"# For example:\n",
"#DEFAULT (echo \"\"; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog\n",

View File

@ -0,0 +1,11 @@
--- cvs-1.11.19/src/rcs.c.old 2005-03-14 13:09:39.000000000 +0100
+++ cvs-1.11.19/src/rcs.c 2005-03-14 13:08:24.000000000 +0100
@@ -3382,7 +3382,7 @@
RCS_check_tag (tag)
const char *tag;
{
- char *invalid = "$,.:;@"; /* invalid RCS tag characters */
+ char *invalid = "$,.:;@/"; /* invalid RCS tag characters */
const char *cp;
/*

19
cvs/cvs-1.11.19-tmp.patch Normal file
View File

@ -0,0 +1,19 @@
--- cvs-1.11.19/src/cvsbug.in.old 2004-02-03 15:37:52.000000000 +0100
+++ cvs-1.11.19/src/cvsbug.in 2005-08-22 16:35:06.000000000 +0200
@@ -109,14 +109,14 @@
/usr/bin/ypcat passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" |
cut -f5 -d':' | sed -e 's/,.*//' > $TEMP
ORIGINATOR="`cat $TEMP`"
- rm -f $TEMP
+ > $TEMP
fi
fi
if [ "$ORIGINATOR" = "" ]; then
grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP
ORIGINATOR="`cat $TEMP`"
- rm -f $TEMP
+ > $TEMP
fi
if [ -n "$ORGANIZATION" ]; then

View File

@ -0,0 +1,11 @@
--- cvs-1.11.21/src/diff.c.old 2005-12-19 11:01:59.000000000 +0100
+++ cvs-1.11.21/src/diff.c 2005-12-21 15:45:40.000000000 +0100
@@ -438,7 +438,7 @@
/* Send the current files unless diffing two revs from the archive */
if (diff_rev2 == NULL && diff_date2 == NULL)
- send_files (argc, argv, local, 0, 0);
+ send_files (argc, argv, local, 0, options[0] == '\0' ? 0 : SEND_FORCE);
else
send_files (argc, argv, local, 0, SEND_NO_CONTENTS);

View File

@ -0,0 +1,21 @@
--- cvs-1.11.21/src/diff.c.old 2005-05-27 19:17:03.000000000 +0200
+++ cvs-1.11.21/src/diff.c 2005-12-15 15:22:05.000000000 +0100
@@ -955,14 +955,16 @@
/* The first revision does not exist. If EMPTY_FILES is
true, treat this as an added file. Otherwise, warn
about the missing tag. */
- if( use_rev2 == NULL || RCS_isdead( vers->srcfile, use_rev2 ) )
+ if( use_rev2 == NULL || RCS_isdead( vers->srcfile, use_rev2 ) ) {
/* At least in the case where DIFF_REV1 and DIFF_REV2
* are both numeric (and non-existant (NULL), as opposed to
* dead?), we should be returning some kind of error (see
* basicb-8a0 in testsuite). The symbolic case may be more
* complicated.
*/
- return DIFF_SAME;
+ error (0, 0, "no revision in file %s or missing file %s", finfo->fullname, finfo->fullname);
+ return DIFF_ERROR;
+ }
if( empty_files )
return DIFF_ADDED;
if( use_rev1 != NULL )

View File

@ -0,0 +1,12 @@
--- cvs-1.11.21/contrib/rcs2log.sh.old 2005-08-02 22:46:43.000000000 +0200
+++ cvs-1.11.21/contrib/rcs2log.sh 2006-05-09 11:49:10.000000000 +0200
@@ -68,6 +68,9 @@
For more information about these matters, see the files named COPYING.
Author: Paul Eggert <eggert@twinsun.com>'
+# set old environment for sort (bug #190009)
+export _POSIX2_VERSION=199209
+
# functions
@MKTEMP_SH_FUNCTION@

View File

@ -0,0 +1,73 @@
From 52093add7b3f38156e632fa81fcf1c0b6ad4d549 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 3 Dec 2013 15:11:14 +0100
Subject: [PATCH] Pass compilation with -Wformat-security
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
diff/diff3.c | 2 +-
src/main.c | 2 +-
src/subr.c | 12 ++++--------
3 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/diff/diff3.c b/diff/diff3.c
index 006039f..e9418ce 100644
--- a/diff/diff3.c
+++ b/diff/diff3.c
@@ -1505,7 +1505,7 @@ output_diff3 (diff, mapping, rev_mapping)
line = 0;
do
{
- printf_output (line_prefix);
+ printf_output ("%s", line_prefix);
cp = D_RELNUM (ptr, realfile, line);
length = D_RELLEN (ptr, realfile, line);
write_output (cp, length);
diff --git a/src/main.c b/src/main.c
index 24a6e6f..e7f0439 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1154,6 +1154,6 @@ usage (cpp)
{
(void) fprintf (stderr, *cpp++, program_name, cvs_cmd_name);
for (; *cpp; cpp++)
- (void) fprintf (stderr, *cpp);
+ (void) fprintf (stderr, "%s", *cpp);
error_exit ();
}
diff --git a/src/subr.c b/src/subr.c
index 0725503..94907ce 100644
--- a/src/subr.c
+++ b/src/subr.c
@@ -46,10 +46,8 @@ xmalloc (bytes)
cp = malloc (bytes);
if (cp == NULL)
{
- char buf[80];
- sprintf (buf, "out of memory; can not allocate %lu bytes",
- (unsigned long) bytes);
- error (1, 0, buf);
+ error (1, 0, "out of memory; can not allocate %lu bytes",
+ (unsigned long) bytes);
}
return (cp);
}
@@ -73,10 +71,8 @@ xrealloc (ptr, bytes)
if (cp == NULL)
{
- char buf[80];
- sprintf (buf, "out of memory; can not reallocate %lu bytes",
- (unsigned long) bytes);
- error (1, 0, buf);
+ error (1, 0, "out of memory; can not reallocate %lu bytes",
+ (unsigned long) bytes);
}
return (cp);
}
--
1.8.3.1

View File

@ -0,0 +1,167 @@
From b122edcb68ff05bb6eb22f6e50423e7f1050841b Mon Sep 17 00:00:00 2001
From: Larry Jones <lawrence.jones@siemens.com>
Date: Thu, 21 Oct 2010 10:08:16 +0200
Subject: [PATCH] Fix for CVE-2010-3846
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Mallformed RCS revision (delete after the end of input file, or overlayed
deleted regions) screws output file image size computation. This leads to
write attempt after the allocated memory opening hiden memory corruption
driven by CVS server.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/rcs.c | 52 +++++++++++++++++++++++++++++-----------------------
1 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/src/rcs.c b/src/rcs.c
index 7d0d078..2f88f85 100644
--- a/src/rcs.c
+++ b/src/rcs.c
@@ -7128,7 +7128,7 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
struct deltafrag *dfhead;
struct deltafrag **dftail;
struct deltafrag *df;
- unsigned long numlines, lastmodline, offset;
+ unsigned long numlines, offset;
struct linevector lines;
int err;
@@ -7202,12 +7202,12 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
/* New temp data structure to hold new org before
copy back into original structure. */
- lines.nlines = lines.lines_alloced = numlines;
+ lines.lines_alloced = numlines;
lines.vector = xmalloc (numlines * sizeof *lines.vector);
/* We changed the list order to first to last -- so the
list never gets larger than the size numlines. */
- lastmodline = 0;
+ lines.nlines = 0;
/* offset created when adding/removing lines
between new and original structure */
@@ -7216,25 +7216,24 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
for (df = dfhead; df != NULL; )
{
unsigned int ln;
- unsigned long deltaend;
+ unsigned long newpos = df->pos - offset;
- if (df->pos > orig_lines->nlines)
+ if (newpos < lines.nlines || newpos > numlines)
err = 1;
/* On error, just free the rest of the list. */
if (!err)
{
- /* Here we need to get to the line where the next insert will
+ /* Here we need to get to the line where the next change will
begin, which is DF->pos in ORIG_LINES. We will fill up to
DF->pos - OFFSET in LINES with original items. */
- for (deltaend = df->pos - offset;
- lastmodline < deltaend;
- lastmodline++)
+ while (lines.nlines < newpos)
{
/* we need to copy from the orig structure into new one */
- lines.vector[lastmodline] =
- orig_lines->vector[lastmodline + offset];
- lines.vector[lastmodline]->refcount++;
+ lines.vector[lines.nlines] =
+ orig_lines->vector[lines.nlines + offset];
+ lines.vector[lines.nlines]->refcount++;
+ lines.nlines++;
}
switch (df->type)
@@ -7246,7 +7245,12 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
struct line *q;
int nextline_newline;
size_t nextline_len;
-
+
+ if (newpos + df->nlines > numlines)
+ {
+ err = 1;
+ break;
+ }
textend = df->new_lines + df->len;
nextline_newline = 0;
nextline_text = df->new_lines;
@@ -7271,8 +7275,7 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
q->has_newline = nextline_newline;
q->refcount = 1;
memcpy (q->text, nextline_text, nextline_len);
- lines.vector[lastmodline++] = q;
- offset--;
+ lines.vector[lines.nlines++] = q;
nextline_text = (char *)p + 1;
nextline_newline = 0;
@@ -7286,11 +7289,11 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
q->has_newline = nextline_newline;
q->refcount = 1;
memcpy (q->text, nextline_text, nextline_len);
- lines.vector[lastmodline++] = q;
+ lines.vector[lines.nlines++] = q;
/* For each line we add the offset between the #'s
decreases. */
- offset--;
+ offset -= df->nlines;
break;
}
@@ -7301,7 +7304,9 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
if (df->pos + df->nlines > orig_lines->nlines)
err = 1;
else if (delvers)
+ {
for (ln = df->pos; ln < df->pos + df->nlines; ++ln)
+ {
if (orig_lines->vector[ln]->refcount > 1)
/* Annotate needs this but, since the original
* vector is disposed of before returning from
@@ -7309,6 +7314,8 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
* there are multiple references.
*/
orig_lines->vector[ln]->vers = delvers;
+ }
+ }
break;
}
}
@@ -7328,21 +7335,20 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
else
{
/* add the rest of the remaining lines to the data vector */
- for (; lastmodline < numlines; lastmodline++)
+ while (lines.nlines < numlines)
{
/* we need to copy from the orig structure into new one */
- lines.vector[lastmodline] = orig_lines->vector[lastmodline
+ lines.vector[lines.nlines] = orig_lines->vector[lines.nlines
+ offset];
- lines.vector[lastmodline]->refcount++;
+ lines.vector[lines.nlines]->refcount++;
+ lines.nlines++;
}
/* Move the lines vector to the original structure for output,
* first deleting the old.
*/
linevector_free (orig_lines);
- orig_lines->vector = lines.vector;
- orig_lines->lines_alloced = numlines;
- orig_lines->nlines = lines.nlines;
+ *orig_lines = lines;
}
return !err;
--
1.7.2.3

View File

@ -0,0 +1,113 @@
From e4a25dba948af9211ffea6b27293fe15c4b3ba07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 4 Dec 2013 08:37:24 +0100
Subject: [PATCH] Create ~/.cvspass at login if it does not exists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
<https://bugzilla.redhat.com/show_bug.cgi?id=47457>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/login.c | 9 +++++++++
src/logmsg.c | 2 +-
src/sanity.sh | 7 ++++++-
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/login.c b/src/login.c
index 50b292b..75dc53a 100644
--- a/src/login.c
+++ b/src/login.c
@@ -315,6 +315,15 @@ internal error: can only call password_entry_operation with pserver method");
fp = CVS_FOPEN (passfile, "r");
if (fp == NULL)
{
+ fp = CVS_FOPEN (passfile, "w");
+ if (fp != NULL)
+ {
+ fclose (fp);
+ fp = CVS_FOPEN (passfile, "r");
+ }
+ }
+ if (fp == NULL)
+ {
error (0, errno, "warning: failed to open %s for reading", passfile);
goto process;
}
diff --git a/src/logmsg.c b/src/logmsg.c
index 741231b..0d4d6a2 100644
--- a/src/logmsg.c
+++ b/src/logmsg.c
@@ -269,7 +269,7 @@ do_editor (dir, messagep, repository, changes)
}
(void) fprintf (fp,
- "%s----------------------------------------------------------------------\n",
+ "\n%s----------------------------------------------------------------------\n",
CVSEDITPREFIX);
(void) fprintf (fp,
"%sEnter Log. Lines beginning with `%.*s' are removed automatically\n%s\n",
diff --git a/src/sanity.sh b/src/sanity.sh
index dbcae19..f119840 100755
--- a/src/sanity.sh
+++ b/src/sanity.sh
@@ -4195,7 +4195,6 @@ ${PROG} commit: Rebuilding administrative file database"
"$PROG logout: WARNING: Ignoring method options found in CVSROOT: \`proxy=localhost;proxyport=8080'\.
$PROG logout: Use CVS version 1\.12\.7 or later to handle method options\.
Logging out of :pserver:$username@localhost:2401/dev/null
-$PROG logout: warning: failed to open $HOME/\.cvspass for reading: No such file or directory
$PROG logout: Entry not found\."
fi
@@ -15552,6 +15551,7 @@ description:
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
@@ -15563,6 +15563,7 @@ xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
@@ -15590,6 +15591,7 @@ description:
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
@@ -15601,6 +15603,7 @@ xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
@@ -15622,6 +15625,7 @@ description:
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
@@ -15633,6 +15637,7 @@ xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
+x
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
--
1.8.3.1

View File

@ -0,0 +1,30 @@
From f40baecd3d09b1018185bcefde35464a79dbd68d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 5 Jun 2013 08:38:11 +0200
Subject: [PATCH] doc: Add mandatory argument to @sp
Texinfo-5.1 fails if @sp macro is not followed by a number. The
numeric argument is mandatory according to Texinfo documentation.
---
doc/cvs.texinfo | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/cvs.texinfo b/doc/cvs.texinfo
index ad3a414..14bc79a 100644
--- a/doc/cvs.texinfo
+++ b/doc/cvs.texinfo
@@ -111,9 +111,9 @@ approved by the Free Software Foundation.
@sp 4
@comment The title is printed in a large font.
@center @titlefont{Version Management}
-@sp
+@sp 1
@center @titlefont{with}
-@sp
+@sp 1
@center @titlefont{CVS}
@sp 2
@center for @sc{cvs} @value{VERSION}
--
1.8.1.4

View File

@ -0,0 +1,34 @@
--- cvs-1.11.23/lib/getline.c 2005-04-04 22:46:05.000000000 +0200
+++ cvs-1.11.23/lib/getline.c.old 2008-06-03 19:06:25.000000000 +0200
@@ -154,7 +154,7 @@
return ret;
}
-int
+ssize_t
getline (lineptr, n, stream)
char **lineptr;
size_t *n;
@@ -163,7 +163,7 @@
return getstr (lineptr, n, stream, '\n', 0, GETLINE_NO_LIMIT);
}
-int
+ssize_t
getline_safe (lineptr, n, stream, limit)
char **lineptr;
size_t *n;
--- cvs-1.11.23/lib/getline.h 2005-04-04 22:46:05.000000000 +0200
+++ cvs-1.11.23/lib/getline.h.old 2008-06-03 19:06:27.000000000 +0200
@@ -11,9 +11,9 @@
#define GETLINE_NO_LIMIT -1
-int
+ssize_t
getline __PROTO ((char **_lineptr, size_t *_n, FILE *_stream));
-int
+ssize_t
getline_safe __PROTO ((char **_lineptr, size_t *_n, FILE *_stream,
int limit));
int

View File

@ -0,0 +1,30 @@
From f923e7c9dd4c71a1f6318d4d9fb0bdd4476ab6c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 25 Oct 2010 17:14:47 +0200
Subject: [PATCH] Make `make check' sanity testing verbose
---
src/Makefile.am | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 63e6b18..1adc157 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -125,11 +125,11 @@ check-local: localcheck remotecheck
.PHONY: localcheck
localcheck:
- $(SHELL) $(srcdir)/sanity.sh `pwd`/cvs$(EXEEXT)
+ $(SHELL) $(srcdir)/sanity.sh -v `pwd`/cvs$(EXEEXT)
.PHONY: remotecheck
remotecheck: all
- $(SHELL) $(srcdir)/sanity.sh -r `pwd`/cvs$(EXEEXT)
+ $(SHELL) $(srcdir)/sanity.sh -v -r `pwd`/cvs$(EXEEXT)
## MAINTAINER Targets
--
1.7.2.3

View File

@ -0,0 +1,25 @@
From 51ac6e634d6a53f4f2c78eafae599079c628e28e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 25 Oct 2010 16:21:54 +0200
Subject: [PATCH] Remove undefinded date from cvs(1) header
---
doc/cvs.1 | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/doc/cvs.1 b/doc/cvs.1
index b696d9a..07b7923 100644
--- a/doc/cvs.1
+++ b/doc/cvs.1
@@ -23,7 +23,7 @@
.ds Rv \\$3
.ds Dt \\$4
..
-.TH CVS 1 "\*(Dt"
+.TH CVS 1
.\" Full space in nroff; half space in troff
.de SP
.if n .sp
--
1.7.2.3

View File

@ -0,0 +1,39 @@
diff -up cvs-1.11.23/src/sanity.sh.old cvs-1.11.23/src/sanity.sh
--- cvs-1.11.23/src/sanity.sh.old 2008-05-07 03:16:00.000000000 +0200
+++ cvs-1.11.23/src/sanity.sh 2010-04-08 14:35:40.574373789 +0200
@@ -2752,7 +2752,7 @@ ${PROG} \[admin aborted\]: attempt to de
dotest_fail basicb-21 "${testcvs} -q admin -H" \
"admin: illegal option -- H
${PROG} \[admin aborted\]: specify ${PROG} -H admin for usage information" \
-"admin: invalid option -- H
+"admin: invalid option -- 'H'
${PROG} \[admin aborted\]: specify ${PROG} -H admin for usage information"
cd ..
rmdir 1
@@ -22192,7 +22198,7 @@ done"
"-r--r--r-- .*"
else
dotest modes-5 "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
-"-r--r--r-- .*"
+"-r--r--r--.*"
fi
# Test for whether we can set the execute bit.
@@ -22213,7 +22219,7 @@ done"
"-r--r--r-- .*"
else
dotest modes-7 "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
-"-r--r--r-- .*"
+"-r--r--r--.*"
fi
# OK, now manually change the modes and see what happens.
@@ -22236,7 +22242,7 @@ done"
"-r--r----- .*"
else
dotest modes-7b "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
-"-r--r----- .*"
+"-r--r-----.*"
fi
CVSUMASK=007