| Index: openssl/crypto/bio/bf_buff.c
|
| ===================================================================
|
| --- openssl/crypto/bio/bf_buff.c (revision 105093)
|
| +++ openssl/crypto/bio/bf_buff.c (working copy)
|
| @@ -209,7 +209,7 @@
|
| /* add to buffer and return */
|
| if (i >= inl)
|
| {
|
| - memcpy(&(ctx->obuf[ctx->obuf_len]),in,inl);
|
| + memcpy(&(ctx->obuf[ctx->obuf_off+ctx->obuf_len]),in,inl);
|
| ctx->obuf_len+=inl;
|
| return(num+inl);
|
| }
|
| @@ -219,7 +219,7 @@
|
| {
|
| if (i > 0) /* lets fill it up if we can */
|
| {
|
| - memcpy(&(ctx->obuf[ctx->obuf_len]),in,i);
|
| + memcpy(&(ctx->obuf[ctx->obuf_off+ctx->obuf_len]),in,i);
|
| in+=i;
|
| inl-=i;
|
| num+=i;
|
| @@ -294,9 +294,9 @@
|
| case BIO_C_GET_BUFF_NUM_LINES:
|
| ret=0;
|
| p1=ctx->ibuf;
|
| - for (i=ctx->ibuf_off; i<ctx->ibuf_len; i++)
|
| + for (i=0; i<ctx->ibuf_len; i++)
|
| {
|
| - if (p1[i] == '\n') ret++;
|
| + if (p1[ctx->ibuf_off + i] == '\n') ret++;
|
| }
|
| break;
|
| case BIO_CTRL_WPENDING:
|
| @@ -399,17 +399,18 @@
|
| for (;;)
|
| {
|
| BIO_clear_retry_flags(b);
|
| - if (ctx->obuf_len > ctx->obuf_off)
|
| + if (ctx->obuf_len > 0)
|
| {
|
| r=BIO_write(b->next_bio,
|
| &(ctx->obuf[ctx->obuf_off]),
|
| - ctx->obuf_len-ctx->obuf_off);
|
| + ctx->obuf_len);
|
| #if 0
|
| -fprintf(stderr,"FLUSH [%3d] %3d -> %3d\n",ctx->obuf_off,ctx->obuf_len-ctx->obuf_off,r);
|
| +fprintf(stderr,"FLUSH [%3d] %3d -> %3d\n",ctx->obuf_off,ctx->obuf_len,r);
|
| #endif
|
| BIO_copy_next_retry(b);
|
| if (r <= 0) return((long)r);
|
| ctx->obuf_off+=r;
|
| + ctx->obuf_len-=r;
|
| }
|
| else
|
| {
|
|
|