diff -uprk.orig cvs-1.11.10.orig/src/server.c cvs-1.11.10/src/server.c --- cvs-1.11.10.orig/src/server.c 2003-12-20 20:27:36 +0300 +++ cvs-1.11.10/src/server.c 2003-12-20 20:32:50 +0300 @@ -5252,23 +5252,19 @@ error 0 %s: no such system user\n", user #endif #if HAVE_PUTENV - /* Set LOGNAME, USER and CVS_USER in the environment, in case they + /* Set HOME, LOGNAME, USER and CVS_USER in the environment, in case they are already set to something else. */ { char *env; - env = xmalloc (sizeof "LOGNAME=" + strlen (username)); - (void) sprintf (env, "LOGNAME=%s", username); - (void) putenv (env); - - env = xmalloc (sizeof "USER=" + strlen (username)); - (void) sprintf (env, "USER=%s", username); - (void) putenv (env); + putenv (xasprintf (&env, "HOME=%s", pw->pw_dir ?: "/")); + putenv (xasprintf (&env, "USER=%s", username)); #ifdef AUTH_SERVER_SUPPORT - env = xmalloc (sizeof "CVS_USER=" + strlen (CVS_Username)); - (void) sprintf (env, "CVS_USER=%s", CVS_Username); - (void) putenv (env); + putenv (xasprintf (&env, "LOGNAME=%s", CVS_Username)); + putenv (xasprintf (&env, "CVS_USER=%s", CVS_Username)); +#else + putenv (xasprintf (&env, "LOGNAME=%s", username)); #endif } #endif /* HAVE_PUTENV */