提交 b8dc9693 编写于 作者: D Dr. Stephen Henson

Encryption BIOs misbehave when used with non blocking I/O.

Two fixes:

1. If BIO_write() fails inside enc_write() it should return the
   total number of bytes successfully written.

2. If BIO_write() fails during BIO_flush() it should return immediately
   with the error code: previously it would fall through to the final
   encrypt, corrupting the buffer.
上级 6ac26a5c
......@@ -271,7 +271,7 @@ static int enc_write(BIO *b, const char *in, int inl)
if (i <= 0)
{
BIO_copy_next_retry(b);
return(i);
return (ret == inl) ? i : ret - inl;
}
n-=i;
ctx->buf_off+=i;
......@@ -325,10 +325,7 @@ again:
{
i=enc_write(b,NULL,0);
if (i < 0)
{
ret=i;
break;
}
return i;
}
if (!ctx->finished)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册