comment
[openssl.git] / crypto / bio / bss_bio.c
index ea9d5c7..99c5cc6 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)
@@ -186,7 +192,6 @@ static int bio_read(BIO *bio, char *buf, int size_)
                }
        while (rest);
        
-       peer_b->request -= size;
        return size;
        }
 
@@ -281,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;
@@ -365,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;
                        }
@@ -572,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);
        }