* fhandler.h (class fhandler_socket): Add members and methods to
support secure connections on AF_UNIX sockets. * fhandler_socket.cc (fhandler_socket::set_connect_secret): New method. (fhandler_socket::get_connect_secret): Ditto. (fhandler_socket::create_secret_event): Ditto. (fhandler_socket::close_secret_event): Ditto. (fhandler_socket::check_peer_secret_event): Ditto. (fhandler_socket::fixup_after_fork): Duplicate secret event to child. (fhandler_socket::dup): Copy address family. (fhandler_socket::close): Close secret event. * net.cc (get_inet_addr): Read secret cookie. (cygwin_connect): Check if peer knows secret cookie value. (cygwin_accept): Ditto. Copy address family to newly created socket. (cygwin_bind): Generate and write secret cookie. (wsock_init): Initialize random number generator.
This commit is contained in:
@ -342,6 +342,8 @@ class fhandler_socket: public fhandler_base
|
||||
{
|
||||
private:
|
||||
int addr_family;
|
||||
int connect_secret [4];
|
||||
HANDLE secret_event;
|
||||
struct _WSAPROTOCOL_INFOA *prot_info_ptr;
|
||||
|
||||
public:
|
||||
@ -368,6 +370,11 @@ public:
|
||||
int ready_for_read (int fd, DWORD howlong, int ignra);
|
||||
int get_addr_family () {return addr_family;}
|
||||
void set_addr_family (int af) {addr_family = af;}
|
||||
void set_connect_secret ();
|
||||
void get_connect_secret (char*);
|
||||
HANDLE create_secret_event (int *secret = NULL);
|
||||
int check_peer_secret_event (struct sockaddr_in *peer, int *secret = NULL);
|
||||
void close_secret_event ();
|
||||
};
|
||||
|
||||
class fhandler_pipe: public fhandler_base
|
||||
|
Reference in New Issue
Block a user