Title: "can't chdir(/root)" error

As I understand it, this is the "official" way to submit changes/fixes back to the maintainers of CVS, so here you go.

Attached is a patch to CVS 1.10.8 to fix the "can't chdir(/root)" error on Redhat linux 6.1. From what I read this is caused by inetd daemon not starting with a clean environment and CVS trying to open files in the root user's directory for which it doesn't not have permissions. The patches to ignore.c and wrapper.c came from a post in the egroups archive(I don't remember the author, sorry). A similar patch was needed in history.c to completely fix the problem. We have been running this for about a month and it appears to working ok.

? root_perm.diff
Index: history.c
===================================================================
RCS file: /home2/cvsroot/ccvs/src/history.c,v
retrieving revision 1.47
diff -r1.47 history.c
739c739
<       char *pwdir;
---
>       char *pwdir = NULL;
740a741,744
> #ifdef SERVER_SUPPORT
>     if (!server_active)
> #endif
>       {
741a746,747
>       }
>
Index: ignore.c
===================================================================
RCS file: /home2/cvsroot/ccvs/src/ignore.c,v
retrieving revision 1.32
diff -r1.32 ignore.c
56c56
<     char *home_dir;
---
>     char *home_dir = NULL;
83c83,88
<     /* Then add entries found in home dir, (if user has one) and file exists */
---
> #ifdef SERVER_SUPPORT
>     if (!server_active)
>       /* Don't try to use a ~/.cvsignore file in server mode. */
> #endif
>       {
>    /* Then add entries found in home dir, (if user has one) and file exists */
89a95,96
>       }

Index: wrapper.c
===================================================================
RCS file: /home2/cvsroot/ccvs/src/wrapper.c,v
retrieving revision 1.26
diff -r1.26 wrapper.c
91c91
<     char *homedir;
---
>     char *homedir = NULL;
117a118,121
> #ifdef SERVER_SUPPORT
>     if (!server_active)
> #endif
>       {
125a130,131
>       }
>

Reply via email to