info-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"gserver currently only enabled for socket connections"


From: Brandon Craig Rhodes
Subject: "gserver currently only enabled for socket connections"
Date: 24 Jun 2002 17:12:40 -0400
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Common Lisp)

While modifying cvs to support Kerberos authentication without root
privileges (a feature we needed in our environment here), I believe I
have discovered a bug in 1.11.2 which prevents the client from ever
making a successful :gserver: connection.

When I attempted to find a forum to which this information and my
patch could be submitted, I was dismayed to find the project in
disarray.  Google gives cvshome.org the first match when `cvs' is
searched for - but this site offers a `cvs-1.11.2.tar.gz' which is
*different* than the one on ftp.gnu.org.  Is this a rogue site?  Does
this mean that there are really *two* distributions which both claim
to be the true 1.11.2?  It would seem that one of these needs to
identify itself as a branch, or at least another version.

The address@hidden list seems to consist of almost nothing but spam,
yet it still seems to be listed as the authoritative forum for cvs
bugs.  Unless the list will be maintained it should be shut down.

The problem with the gserver code is that, in client.c, the function
auth_server(...) attempts to extract a file descriptor from a `struct
buffer *' through a simple cast:

        int fd = (int) lto_server->closure;

This is wrong - we need to access the `struct buffer' that `closure'
points to, not simply cast its pointer to an integer!  The result of
this code is that attempts at a gserver connection always complain
`gserver currently only enabled for socket connections' because the
attempt to verify whether the invalid file descriptor is a socket
returns false.

This code functions correctly for me:

        struct stdio_buffer_closure *bc = \
                (struct stdio_buffer_closure *) lto_server->closure;
        FILE *file = bc->fp;
        int fd = fileno(file);

I would like to submit this as a patch but am not yet sure where the
"real" CVS project is.  Please advise,
-- 
Brandon Craig Rhodes                         http://www.rhodesmill.org/brandon
Georgia Tech                                            address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]