pkgsrc/devel/cvs/patches/patch-ar
wiz 6da4e38375 Update to 1.11.6.
* A warning message is now issued if an administrative file contains
more than one DEFAULT entry.

* An error running a verifymsg script (such as referencing an unset
user variable or the script not existing) now causes the verification
to fail.

* Errors in administrative files commands (like unset user variables)
are no longer reported unless the command is actually executed.

* When a file is initially checked out, its last access time is
now set to the current time rather than being set to the time the
file was last checked in like the modification time is.

* The Checkin.prog and Update.prog functionality has been removed.
This fuctionality previously allowed executables to be specified
in the modules file to be run at update and checkin time, but users
could edit these files on a per workspace basis, creating a security
hole.
[NB: already fixed in the package earlier -- wiz]

* Corrected the path in a failed write error message.

* Autoconf and Automake are no longer run automatically unless you
run configure with --enable-maintainer-mode.  Accordingly,
noautomake.sh is no longer needed and has been removed.

* We've standardized on Automake version 1.7.5 and Autoconf version
2.57 to get at a few new macros.  Again, this should only really
affect developers.  See the section of the INSTALL file about using
the autotools if you are compiling CVS yourself.
2003-07-12 09:19:17 +00:00

54 lines
1.4 KiB
Text

$NetBSD: patch-ar,v 1.9 2003/07/12 09:19:19 wiz Exp $
--- src/server.c.orig Sat Jul 12 09:09:22 2003
+++ src/server.c
@@ -772,6 +772,7 @@ E Protocol error: Root says \"%s\" but p
nothing. But for rsh, we need to do it now. */
parse_config (current_parsed_root->directory);
+ if (!nolock) {
path = xmalloc (strlen (current_parsed_root->directory)
+ sizeof (CVSROOTADM)
+ 2);
@@ -789,6 +790,7 @@ E Protocol error: Root says \"%s\" but p
pending_error = save_errno;
}
free (path);
+ }
#ifdef HAVE_PUTENV
env = xmalloc (strlen (CVSROOT_ENV) + strlen (current_parsed_root->directory) + 2);
@@ -2170,6 +2172,8 @@ serve_global_option (arg)
{
case 'n':
noexec = 1;
+ case 'u':
+ nolock = 1;
break;
case 'q':
quiet = 1;
@@ -5127,6 +5131,7 @@ switch_to_user (username)
const char *username;
{
struct passwd *pw;
+ int rc;
pw = getpwnam (username);
if (pw == NULL)
@@ -5191,7 +5196,15 @@ error 0 %s: no such system user\n", user
}
}
- if (setuid (pw->pw_uid) < 0)
+#ifdef SETXID_SUPPORT
+ /* Honor the setuid bit iff set. */
+ if (getuid() != geteuid())
+ rc = setuid (geteuid ());
+ else
+#else
+ rc = setuid (pw->pw_uid);
+#endif
+ if (rc < 0)
{
/* Note that this means that if run as a non-root user,
CVSROOT/passwd must contain the user we are running as