X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fbio%2Fbss_bio.c;h=820cf8cf6a25982366004e138fa86d19e44f78de;hp=c6bb3d68857a722c0506dfa105735ce1dec03e98;hb=3105d695358d86c0f2a404b2b74a1870b941ce5e;hpb=ca3a82c3b364e1e584546f0f3bbb938b0b472580 diff --git a/crypto/bio/bss_bio.c b/crypto/bio/bss_bio.c index c6bb3d6885..820cf8cf6a 100644 --- a/crypto/bio/bss_bio.c +++ b/crypto/bio/bss_bio.c @@ -1,4 +1,3 @@ -/* crypto/bio/bss_bio.c -*- Mode: C; c-file-style: "eay" -*- */ /* ==================================================================== * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. * @@ -61,39 +60,17 @@ * See ssl/ssltest.c for some hints on how this can be used. */ -/* BIO_DEBUG implies BIO_PAIR_DEBUG */ -#ifdef BIO_DEBUG -# ifndef BIO_PAIR_DEBUG -# define BIO_PAIR_DEBUG -# endif -#endif - -/* disable assert() unless BIO_PAIR_DEBUG has been defined */ -#ifndef BIO_PAIR_DEBUG -# ifndef NDEBUG -# define NDEBUG -# endif -#endif - #include #include #include #include -#include +#include "bio_lcl.h" #include #include #include "e_os.h" -/* VxWorks defines SSIZE_MAX with an empty value causing compile errors */ -#if defined(OPENSSL_SYS_VXWORKS) -# undef SSIZE_MAX -#endif -#ifndef SSIZE_MAX -# define SSIZE_MAX INT_MAX -#endif - static int bio_new(BIO *bio); static int bio_free(BIO *bio); static int bio_read(BIO *bio, char *buf, int size); @@ -104,7 +81,7 @@ static int bio_puts(BIO *bio, const char *str); static int bio_make_pair(BIO *bio1, BIO *bio2); static void bio_destroy_pair(BIO *bio); -static BIO_METHOD methods_biop = { +static const BIO_METHOD methods_biop = { BIO_TYPE_BIO, "BIO pair", bio_write, @@ -117,7 +94,7 @@ static BIO_METHOD methods_biop = { NULL /* no bio_callback_ctrl */ }; -BIO_METHOD *BIO_s_bio(void) +const BIO_METHOD *BIO_s_bio(void) { return &methods_biop; } @@ -144,7 +121,7 @@ static int bio_new(BIO *bio) { struct bio_bio_st *b; - b = OPENSSL_malloc(sizeof *b); + b = OPENSSL_malloc(sizeof(*b)); if (b == NULL) return 0; @@ -170,10 +147,7 @@ static int bio_free(BIO *bio) if (b->peer) bio_destroy_pair(bio); - if (b->buf != NULL) { - OPENSSL_free(b->buf); - } - + OPENSSL_free(b->buf); OPENSSL_free(b); return 1; @@ -312,8 +286,8 @@ static ossl_ssize_t bio_nread(BIO *bio, char **buf, size_t num_) struct bio_bio_st *b, *peer_b; ossl_ssize_t num, available; - if (num_ > SSIZE_MAX) - num = SSIZE_MAX; + if (num_ > OSSL_SSIZE_MAX) + num = OSSL_SSIZE_MAX; else num = (ossl_ssize_t) num_; @@ -468,8 +442,8 @@ static ossl_ssize_t bio_nwrite(BIO *bio, char **buf, size_t num_) struct bio_bio_st *b; ossl_ssize_t num, space; - if (num_ > SSIZE_MAX) - num = SSIZE_MAX; + if (num_ > OSSL_SSIZE_MAX) + num = OSSL_SSIZE_MAX; else num = (ossl_ssize_t) num_; @@ -507,10 +481,8 @@ static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr) size_t new_size = num; if (b->size != new_size) { - if (b->buf) { - OPENSSL_free(b->buf); - b->buf = NULL; - } + OPENSSL_free(b->buf); + b->buf = NULL; b->size = new_size; } ret = 1; @@ -655,16 +627,15 @@ static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr) break; case BIO_CTRL_EOF: - { - BIO *other_bio = ptr; - - if (other_bio) { - struct bio_bio_st *other_b = other_bio->ptr; + if (b->peer != NULL) { + struct bio_bio_st *peer_b = b->peer->ptr; - assert(other_b != NULL); - ret = other_b->len == 0 && other_b->closed; - } else + if (peer_b->len == 0 && peer_b->closed) ret = 1; + else + ret = 0; + } else { + ret = 1; } break;