From: Simon Tatham Date: Wed, 22 Feb 2017 21:51:03 +0000 (+0000) Subject: uxproxy: fix write error handling on outgoing pipe. X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=86b604dd65679d983c06012b377e41c927da3cd6;p=PuTTY.git uxproxy: fix write error handling on outgoing pipe. Jacob pointed out the other day that the call to logevent with NULL frontend handle can't possibly work, and the comment next to it saying that it can is an outright lie (probably thoughtlessly copied from some part of the Windows front end, where it actually would be true). Furthermore, even if that logevent call didn't dereference NULL and segfault, the followup call to fatalbox() would be inappropriate, since proxied connections need not be the primary network connection of the whole process. Rewritten as a call to plug_closing, which is the proper channel through which to report errors on an individual socket or equivalent. --- diff --git a/unix/uxproxy.c b/unix/uxproxy.c index f92c459b..3df4cebe 100644 --- a/unix/uxproxy.c +++ b/unix/uxproxy.c @@ -149,10 +149,8 @@ static int localproxy_try_send(Local_Proxy_Socket ps) bufchain_prefix(&ps->pending_output_data, &data, &len); ret = write(ps->to_cmd, data, len); if (ret < 0 && errno != EWOULDBLOCK) { - /* We're inside the Unix frontend here, so we know - * that the frontend handle is unnecessary. */ - logevent(NULL, strerror(errno)); - fatalbox("%s", strerror(errno)); + plug_closing(ps->plug, strerror(errno), errno, 0); + return 0; } else if (ret <= 0) { break; } else {