X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxproxy.c;h=f230604a2c41634cec5afe725b99cdff3685c02b;hb=89da2ddf564a93414ee9ab2df3f053608094e417;hp=def8a40aad42023368097d514335263b7d1e829a;hpb=947962e0b95e10151c186048a8b5cc2fb425838c;p=PuTTY.git diff --git a/unix/uxproxy.c b/unix/uxproxy.c index def8a40a..f230604a 100644 --- a/unix/uxproxy.c +++ b/unix/uxproxy.c @@ -30,8 +30,6 @@ struct Socket_localproxy_tag { bufchain pending_output_data; bufchain pending_input_data; enum { EOF_NO, EOF_PENDING, EOF_SENT } outgoingeof; - - void *privptr; }; static int localproxy_select_result(int fd, int event); @@ -186,18 +184,6 @@ static void sk_localproxy_flush (Socket s) /* do nothing */ } -static void sk_localproxy_set_private_ptr (Socket s, void *ptr) -{ - Local_Proxy_Socket ps = (Local_Proxy_Socket) s; - ps->privptr = ptr; -} - -static void * sk_localproxy_get_private_ptr (Socket s) -{ - Local_Proxy_Socket ps = (Local_Proxy_Socket) s; - return ps->privptr; -} - static void sk_localproxy_set_frozen (Socket s, int is_frozen) { Local_Proxy_Socket ps = (Local_Proxy_Socket) s; @@ -244,7 +230,7 @@ static int localproxy_select_result(int fd, int event) return 1; } -Socket platform_new_connection(SockAddr addr, char *hostname, +Socket platform_new_connection(SockAddr addr, const char *hostname, int port, int privport, int oobinline, int nodelay, int keepalive, Plug plug, Conf *conf) @@ -258,8 +244,6 @@ Socket platform_new_connection(SockAddr addr, char *hostname, sk_localproxy_write_oob, sk_localproxy_write_eof, sk_localproxy_flush, - sk_localproxy_set_private_ptr, - sk_localproxy_get_private_ptr, sk_localproxy_set_frozen, sk_localproxy_socket_error }; @@ -288,6 +272,7 @@ Socket platform_new_connection(SockAddr addr, char *hostname, if (pipe(to_cmd_pipe) < 0 || pipe(from_cmd_pipe) < 0) { ret->error = dupprintf("pipe: %s", strerror(errno)); + sfree(cmd); return (Socket)ret; } cloexec(to_cmd_pipe[1]); @@ -297,6 +282,7 @@ Socket platform_new_connection(SockAddr addr, char *hostname, if (pid < 0) { ret->error = dupprintf("fork: %s", strerror(errno)); + sfree(cmd); return (Socket)ret; } else if (pid == 0) { close(0); @@ -305,8 +291,8 @@ Socket platform_new_connection(SockAddr addr, char *hostname, dup2(from_cmd_pipe[1], 1); close(to_cmd_pipe[0]); close(from_cmd_pipe[1]); - fcntl(0, F_SETFD, 0); - fcntl(1, F_SETFD, 0); + noncloexec(0); + noncloexec(1); execl("/bin/sh", "sh", "-c", cmd, (void *)NULL); _exit(255); }