6da4e38375
* 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.
54 lines
1.4 KiB
Text
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
|