Re: [PATCH 1/3] Check output of write() to stdout

2014-06-02 Thread Bob Beck
abort? are you insane? no no no no...


On Sun, Jun 1, 2014 at 8:28 PM, Brent Cook bust...@gmail.com wrote:

 Check for errors on write. Since SIGPIPE is ignored, play nicely with
 pipelines by aborting on EPIPE.
 ---
  src/apps/s_server.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

 diff --git a/src/apps/s_server.c b/src/apps/s_server.c
 index 77384ec..836d46b 100644
 --- a/src/apps/s_server.c
 +++ b/src/apps/s_server.c
 @@ -1760,8 +1760,11 @@ sv_body(char *hostname, int s, unsigned char
 *context)
 i = SSL_read(con, (char *) buf, bufsize);
 switch (SSL_get_error(con, i)) {
 case SSL_ERROR_NONE:
 -   write(fileno(stdout), buf,
 -   (unsigned int) i);
 +   if (write(fileno(stdout), buf, i)
 == -1) {
 +   if (errno == EPIPE) {
 +   abort();
 +   }
 +   }
 if (SSL_pending(con))
 goto again;
 break;
 --
 1.9.3




Re: [PATCH 1/3] Check output of write() to stdout

2014-06-02 Thread Ted Unangst
On Mon, Jun 02, 2014 at 09:51, Brent Cook wrote:

 Is something like this more to taste? Or maybe just a simple (void)write()
 as in libc/time/zic.c ?

I think maybe we want to save this one for later. If it's not
immediately obvious what the correct fix is, move along to something
where the correct fix is obvious.



Re: [PATCH 1/3] Check output of write() to stdout

2014-06-01 Thread Theo de Raadt

This diff is very dissapointing.


 Check for errors on write. Since SIGPIPE is ignored, play nicely with
 pipelines by aborting on EPIPE.
 ---
  src/apps/s_server.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/src/apps/s_server.c b/src/apps/s_server.c
 index 77384ec..836d46b 100644
 --- a/src/apps/s_server.c
 +++ b/src/apps/s_server.c
 @@ -1760,8 +1760,11 @@ sv_body(char *hostname, int s, unsigned char *context)
   i = SSL_read(con, (char *) buf, bufsize);
   switch (SSL_get_error(con, i)) {
   case SSL_ERROR_NONE:
 - write(fileno(stdout), buf,
 - (unsigned int) i);
 + if (write(fileno(stdout), buf, i) == 
 -1) {
 + if (errno == EPIPE) {
 + abort();
 + }
 + }
   if (SSL_pending(con))
   goto again;
   break;
 -- 
 1.9.3