Disable RegQueryValueEx() call.
[openssl.git] / ssl / s2_lib.c
index 47713ec9f9d7d844d0ab47cf4d6a75cc927617f0..a590dbfa5ca6809919d0de60aaac301a3a3bfdb5 100644 (file)
@@ -230,6 +230,9 @@ static SSL_METHOD SSLv2_data= {
        ssl_bad_method,
        ssl2_default_timeout,
        &ssl3_undef_enc_method,
+       ssl_undefined_function,
+       ssl2_callback_ctrl,     /* local */
+       ssl2_ctx_callback_ctrl, /* local */
        };
 
 static long ssl2_default_timeout(void)
@@ -257,20 +260,26 @@ SSL_CIPHER *ssl2_get_cipher(unsigned int u)
 
 int ssl2_pending(SSL *s)
        {
-       return(s->s2->ract_data_length);
+       return SSL_in_init(s) ? 0 : s->s2->ract_data_length;
        }
 
 int ssl2_new(SSL *s)
        {
        SSL2_STATE *s2;
 
-       if ((s2=Malloc(sizeof *s2)) == NULL) goto err;
+       if ((s2=OPENSSL_malloc(sizeof *s2)) == NULL) goto err;
        memset(s2,0,sizeof *s2);
 
-       if ((s2->rbuf=Malloc(
-               SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+2)) == NULL) goto err;
-       if ((s2->wbuf=Malloc(
+#if SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER + 3 > SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER + 2
+#  error "assertion failed"
+#endif
+
+       if ((s2->rbuf=OPENSSL_malloc(
                SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+2)) == NULL) goto err;
+       /* wbuf needs one byte more because when using two-byte headers,
+        * we leave the first byte unused in do_ssl_write (s2_pkt.c) */
+       if ((s2->wbuf=OPENSSL_malloc(
+               SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER+3)) == NULL) goto err;
        s->s2=s2;
 
        ssl2_clear(s);
@@ -278,9 +287,9 @@ int ssl2_new(SSL *s)
 err:
        if (s2 != NULL)
                {
-               if (s2->wbuf != NULL) Free(s2->wbuf);
-               if (s2->rbuf != NULL) Free(s2->rbuf);
-               Free(s2);
+               if (s2->wbuf != NULL) OPENSSL_free(s2->wbuf);
+               if (s2->rbuf != NULL) OPENSSL_free(s2->rbuf);
+               OPENSSL_free(s2);
                }
        return(0);
        }
@@ -293,10 +302,10 @@ void ssl2_free(SSL *s)
            return;
 
        s2=s->s2;
-       if (s2->rbuf != NULL) Free(s2->rbuf);
-       if (s2->wbuf != NULL) Free(s2->wbuf);
+       if (s2->rbuf != NULL) OPENSSL_free(s2->rbuf);
+       if (s2->wbuf != NULL) OPENSSL_free(s2->wbuf);
        memset(s2,0,sizeof *s2);
-       Free(s2);
+       OPENSSL_free(s2);
        s->s2=NULL;
        }
 
@@ -335,11 +344,21 @@ long ssl2_ctrl(SSL *s, int cmd, long larg, char *parg)
        return(ret);
        }
 
+long ssl2_callback_ctrl(SSL *s, int cmd, void (*fp)())
+       {
+       return(0);
+       }
+
 long ssl2_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg)
        {
        return(0);
        }
 
+long ssl2_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)())
+       {
+       return(0);
+       }
+
 /* This function needs to check if the ciphers required are actually
  * available */
 SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p)
@@ -371,7 +390,7 @@ SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p)
        cpp=(SSL_CIPHER **)OBJ_bsearch((char *)&cp,
                (char *)sorted,
                SSL2_NUM_CIPHERS,sizeof(SSL_CIPHER *),
-               (int (*)())ssl_cipher_ptr_id_cmp);
+               FP_ICC ssl_cipher_ptr_id_cmp);
        if ((cpp == NULL) || !(*cpp)->valid)
                return(NULL);
        else