comment
[openssl.git] / crypto / bio / bss_bio.c
index dae8b3b3e2eeace87ab1b26ac5f72cdf4adcd8f2..99c5cc6d0d6d459b2eeba507021a7ee65c33a391 100644 (file)
@@ -7,6 +7,11 @@
  * for which no specific BIO method is available.
  * See ssl/ssltest.c for some hints on how this can be used. */
 
+#ifndef BIO_PAIR_DEBUG
+# undef NDEBUG /* avoid conflicting definitions */
+# define NDEBUG
+#endif
+
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
@@ -57,9 +62,10 @@ struct bio_bio_st
        size_t size;
        char *buf;      /* "size" elements (if != NULL) */
 
-       size_t request; /* valid iff peer != NULL; 0 if len != 0;
+       size_t request; /* valid iff peer != NULL; 0 if len != 0,
                         * otherwise set by peer to number of bytes
-                        * it (unsuccesfully) tried to read. */
+                        * it (unsuccesfully) tried to read,
+                        * never more than buffer space (size-len) warrants. */
 };
 
 static int bio_new(BIO *bio)
@@ -280,6 +286,11 @@ static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr)
                        BIOerr(BIO_F_BIO_CTRL, BIO_R_IN_USE);
                        ret = 0;
                        }
+               else if (num == 0)
+                       {
+                       BIOerr(BIO_F_BIO_CTRL, BIO_R_INVALID_ARGUMENT);
+                       ret = 0;
+                       }
                else
                        {
                        size_t new_size = num;
@@ -364,7 +375,7 @@ static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr)
        case BIO_CTRL_PENDING:
                if (b->peer != NULL)
                        {
-                       struct bio_bio_st *peer_b =b->peer->ptr;
+                       struct bio_bio_st *peer_b = b->peer->ptr;
                        
                        ret = (long) peer_b->len;
                        }
@@ -571,7 +582,7 @@ size_t BIO_ctrl_get_write_guarantee(BIO *bio)
        return BIO_ctrl(bio, BIO_C_GET_WRITE_GUARANTEE, 0, NULL);
        }
 
-size_t BIO_ctrl_read_request(BIO *bio)
+size_t BIO_ctrl_get_read_request(BIO *bio)
     {
        return BIO_ctrl(bio, BIO_C_GET_READ_REQUEST, 0, NULL);
        }