diff options
author | marha <marha@users.sourceforge.net> | 2012-01-27 20:31:28 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-01-27 20:31:28 +0100 |
commit | c6a1477b0092762299491d79b3a8cb094c6456da (patch) | |
tree | 8458d152a6d4cecd8b2d88f3e7e6950128a53fb7 /openssl/crypto/bio | |
parent | eb4c088eb71f93b9639f4ff651523d794f1433f7 (diff) | |
download | vcxsrv-c6a1477b0092762299491d79b3a8cb094c6456da.tar.gz vcxsrv-c6a1477b0092762299491d79b3a8cb094c6456da.tar.bz2 vcxsrv-c6a1477b0092762299491d79b3a8cb094c6456da.zip |
update to openssl 1.0.0g
Diffstat (limited to 'openssl/crypto/bio')
-rw-r--r-- | openssl/crypto/bio/bf_buff.c | 15 | ||||
-rw-r--r-- | openssl/crypto/bio/bio.h | 9 |
2 files changed, 17 insertions, 7 deletions
diff --git a/openssl/crypto/bio/bf_buff.c b/openssl/crypto/bio/bf_buff.c index c1fd75aaa..4b5a132d8 100644 --- a/openssl/crypto/bio/bf_buff.c +++ b/openssl/crypto/bio/bf_buff.c @@ -209,7 +209,7 @@ start: /* 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 @@ start: { 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 @@ static long buffer_ctrl(BIO *b, int cmd, long num, void *ptr) 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 @@ static long buffer_ctrl(BIO *b, int cmd, long num, void *ptr) 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 { diff --git a/openssl/crypto/bio/bio.h b/openssl/crypto/bio/bio.h index 152802fbd..ab47abcf1 100644 --- a/openssl/crypto/bio/bio.h +++ b/openssl/crypto/bio/bio.h @@ -306,6 +306,15 @@ DECLARE_STACK_OF(BIO) typedef struct bio_f_buffer_ctx_struct { + /* Buffers are setup like this: + * + * <---------------------- size -----------------------> + * +---------------------------------------------------+ + * | consumed | remaining | free space | + * +---------------------------------------------------+ + * <-- off --><------- len -------> + */ + /* BIO *bio; */ /* this is now in the BIO struct */ int ibuf_size; /* how big is the input buffer */ int obuf_size; /* how big is the output buffer */ |