X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fbio%2Fbf_nbio.c;h=c72a23c2e1b289417543fb372f90a5a3a86115e8;hp=034b3024dfc3b7ad3cd05a0a18a5ec0a5093f355;hb=542a1b1a2ef205d1869614dd83ff19eae36437c3;hpb=7dfb0b774e6592dcbfe47015168a0ac8b44e2a17 diff --git a/crypto/bio/bf_nbio.c b/crypto/bio/bf_nbio.c index 034b3024df..c72a23c2e1 100644 --- a/crypto/bio/bf_nbio.c +++ b/crypto/bio/bf_nbio.c @@ -59,31 +59,20 @@ #include #include #include "cryptlib.h" -#include "rand.h" -#include "bio.h" -#include "evp.h" +#include +#include /* BIO_put and BIO_get both add to the digest, * BIO_gets returns the digest */ -#ifndef NOPROTO -static int nbiof_write(BIO *h,char *buf,int num); +static int nbiof_write(BIO *h,const char *buf,int num); static int nbiof_read(BIO *h,char *buf,int size); -static int nbiof_puts(BIO *h,char *str); +static int nbiof_puts(BIO *h,const char *str); static int nbiof_gets(BIO *h,char *str,int size); -static long nbiof_ctrl(BIO *h,int cmd,long arg1,char *arg2); +static long nbiof_ctrl(BIO *h,int cmd,long arg1,void *arg2); static int nbiof_new(BIO *h); static int nbiof_free(BIO *data); -#else -static int nbiof_write(); -static int nbiof_read(); -static int nbiof_puts(); -static int nbiof_gets(); -static long nbiof_ctrl(); -static int nbiof_new(); -static int nbiof_free(); -#endif - +static long nbiof_callback_ctrl(BIO *h,int cmd,bio_info_cb *fp); typedef struct nbio_test_st { /* only set if we sent a 'should retry' error */ @@ -102,19 +91,19 @@ static BIO_METHOD methods_nbiof= nbiof_ctrl, nbiof_new, nbiof_free, + nbiof_callback_ctrl, }; -BIO_METHOD *BIO_f_nbio_test() +BIO_METHOD *BIO_f_nbio_test(void) { return(&methods_nbiof); } -static int nbiof_new(bi) -BIO *bi; +static int nbiof_new(BIO *bi) { NBIO_TEST *nt; - nt=(NBIO_TEST *)Malloc(sizeof(NBIO_TEST)); + if (!(nt=(NBIO_TEST *)OPENSSL_malloc(sizeof(NBIO_TEST)))) return(0); nt->lrn= -1; nt->lwn= -1; bi->ptr=(char *)nt; @@ -123,26 +112,22 @@ BIO *bi; return(1); } -static int nbiof_free(a) -BIO *a; +static int nbiof_free(BIO *a) { if (a == NULL) return(0); if (a->ptr != NULL) - Free(a->ptr); + OPENSSL_free(a->ptr); a->ptr=NULL; a->init=0; a->flags=0; return(1); } -static int nbiof_read(b,out,outl) -BIO *b; -char *out; -int outl; +static int nbiof_read(BIO *b, char *out, int outl) { NBIO_TEST *nt; int ret=0; -#if 0 +#if 1 int num; unsigned char n; #endif @@ -152,8 +137,8 @@ int outl; nt=(NBIO_TEST *)b->ptr; BIO_clear_retry_flags(b); -#if 0 - RAND_bytes(&n,1); +#if 1 + RAND_pseudo_bytes(&n,1); num=(n&0x07); if (outl > num) outl=num; @@ -173,10 +158,7 @@ int outl; return(ret); } -static int nbiof_write(b,in,inl) -BIO *b; -char *in; -int inl; +static int nbiof_write(BIO *b, const char *in, int inl) { NBIO_TEST *nt; int ret=0; @@ -197,7 +179,7 @@ int inl; } else { - RAND_bytes(&n,1); + RAND_pseudo_bytes(&n,1); num=(n&7); } @@ -221,11 +203,7 @@ int inl; return(ret); } -static long nbiof_ctrl(b,cmd,num,ptr) -BIO *b; -int cmd; -long num; -char *ptr; +static long nbiof_ctrl(BIO *b, int cmd, long num, void *ptr) { long ret; @@ -247,19 +225,28 @@ char *ptr; return(ret); } -static int nbiof_gets(bp,buf,size) -BIO *bp; -char *buf; -int size; +static long nbiof_callback_ctrl(BIO *b, int cmd, bio_info_cb *fp) + { + long ret=1; + + if (b->next_bio == NULL) return(0); + switch (cmd) + { + default: + ret=BIO_callback_ctrl(b->next_bio,cmd,fp); + break; + } + return(ret); + } + +static int nbiof_gets(BIO *bp, char *buf, int size) { if (bp->next_bio == NULL) return(0); return(BIO_gets(bp->next_bio,buf,size)); } -static int nbiof_puts(bp,str) -BIO *bp; -char *str; +static int nbiof_puts(BIO *bp, const char *str) { if (bp->next_bio == NULL) return(0); return(BIO_puts(bp->next_bio,str));