Tweaks for comments due to indent's inability to handle them
[openssl.git] / ssl / s2_srvr.c
index 94716768723a3f4ef3370878027477d5daa5ded9..b33a74e373d612f707a268e701e437a95216352d 100644 (file)
@@ -188,13 +188,21 @@ int ssl2_accept(SSL *s)
                        s->version=SSL2_VERSION;
                        s->type=SSL_ST_ACCEPT;
 
-                       buf=s->init_buf;
-                       if ((buf == NULL) && ((buf=BUF_MEM_new()) == NULL))
-                               { ret= -1; goto end; }
-                       if (!BUF_MEM_grow(buf,(int)
-                               SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER))
-                               { ret= -1; goto end; }
-                       s->init_buf=buf;
+                       if(s->init_buf == NULL)
+                               {
+                               if ((buf=BUF_MEM_new()) == NULL)
+                                       {
+                                       ret= -1;
+                                       goto end;
+                                       }
+                               if (!BUF_MEM_grow(buf,(int) SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER))
+                                       {
+                                       BUF_MEM_free(buf);
+                                       ret= -1;
+                                       goto end;
+                                       }
+                               s->init_buf=buf;
+                               }
                        s->init_num=0;
                        s->ctx->stats.sess_accept++;
                        s->handshake_func=ssl2_accept;
@@ -403,13 +411,14 @@ static int get_client_master_key(SSL *s)
                p+=3;
                n2s(p,i); s->s2->tmp.clear=i;
                n2s(p,i); s->s2->tmp.enc=i;
-               n2s(p,i); s->session->key_arg_length=i;
-               if(s->session->key_arg_length > SSL_MAX_KEY_ARG_LENGTH)
+               n2s(p,i);
+               if(i > SSL_MAX_KEY_ARG_LENGTH)
                        {
                        ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
                        SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, SSL_R_KEY_ARG_TOO_LONG);
                        return -1;
                        }
+               s->session->key_arg_length=i;
                s->state=SSL2_ST_GET_CLIENT_MASTER_KEY_B;
                }
 
@@ -433,7 +442,10 @@ static int get_client_master_key(SSL *s)
        i = ssl2_read(s,(char *)&(p[s->init_num]),n);
        if (i != n) return(ssl2_part_read(s,SSL_F_GET_CLIENT_MASTER_KEY,i));
        if (s->msg_callback)
-               s->msg_callback(0, s->version, 0, p, (size_t)len, s, s->msg_callback_arg); /* CLIENT-MASTER-KEY */
+               {
+               /* CLIENT-MASTER-KEY */
+               s->msg_callback(0, s->version, 0, p, (size_t)len, s, s->msg_callback_arg);
+               }
        p += 10;
 
        memcpy(s->session->key_arg,&(p[s->s2->tmp.clear+s->s2->tmp.enc]),
@@ -582,7 +594,10 @@ static int get_client_hello(SSL *s)
        i = ssl2_read(s,(char *)&(p[s->init_num]),n);
        if (i != n) return(ssl2_part_read(s,SSL_F_GET_CLIENT_HELLO,i));
        if (s->msg_callback)
-               s->msg_callback(0, s->version, 0, p, (size_t)len, s, s->msg_callback_arg); /* CLIENT-HELLO */
+               {
+               /* CLIENT-HELLO */
+               s->msg_callback(0, s->version, 0, p, (size_t)len, s, s->msg_callback_arg);
+               }
        p += 9;
 
        /* get session-id before cipher stuff so we can get out session
@@ -855,7 +870,10 @@ static int get_client_finished(SSL *s)
                return(ssl2_part_read(s,SSL_F_GET_CLIENT_FINISHED,i));
                }
        if (s->msg_callback)
-               s->msg_callback(0, s->version, 0, p, len, s, s->msg_callback_arg); /* CLIENT-FINISHED */
+               {
+               /* CLIENT-FINISHED */
+               s->msg_callback(0, s->version, 0, p, len, s, s->msg_callback_arg);
+               }
        p += 1;
        if (memcmp(p,s->s2->conn_id,s->s2->conn_id_length) != 0)
                {
@@ -978,7 +996,10 @@ static int request_certificate(SSL *s)
                                }
 
                        if (s->msg_callback)
-                               s->msg_callback(0, s->version, 0, p, 3, s, s->msg_callback_arg); /* ERROR */
+                               {
+                               /* ERROR */
+                               s->msg_callback(0, s->version, 0, p, 3, s, s->msg_callback_arg);
+                               }
 
                        /* this is the one place where we can recover from an SSL 2.0 error */
 
@@ -1033,7 +1054,10 @@ static int request_certificate(SSL *s)
                goto end;
                }
        if (s->msg_callback)
-               s->msg_callback(0, s->version, 0, p, len, s, s->msg_callback_arg); /* CLIENT-CERTIFICATE */
+               {
+               /* CLIENT-CERTIFICATE */
+               s->msg_callback(0, s->version, 0, p, len, s, s->msg_callback_arg);
+               }
        p += 6;
 
        cp = p;
@@ -1058,10 +1082,12 @@ static int request_certificate(SSL *s)
                EVP_PKEY *pkey=NULL;
 
                EVP_MD_CTX_init(&ctx);
-               EVP_VerifyInit_ex(&ctx,s->ctx->rsa_md5, NULL);
-               EVP_VerifyUpdate(&ctx,s->s2->key_material,
-                                s->s2->key_material_length);
-               EVP_VerifyUpdate(&ctx,ccd,SSL2_MIN_CERT_CHALLENGE_LENGTH);
+               if (!EVP_VerifyInit_ex(&ctx,s->ctx->rsa_md5, NULL)
+                   || !EVP_VerifyUpdate(&ctx,s->s2->key_material,
+                                        s->s2->key_material_length)
+                   || !EVP_VerifyUpdate(&ctx,ccd,
+                                        SSL2_MIN_CERT_CHALLENGE_LENGTH))
+                       goto msg_end;
 
                i=i2d_X509(s->cert->pkeys[SSL_PKEY_RSA_ENC].x509,NULL);
                buf2=OPENSSL_malloc((unsigned int)i);
@@ -1072,7 +1098,11 @@ static int request_certificate(SSL *s)
                        }
                p2=buf2;
                i=i2d_X509(s->cert->pkeys[SSL_PKEY_RSA_ENC].x509,&p2);
-               EVP_VerifyUpdate(&ctx,buf2,(unsigned int)i);
+               if (!EVP_VerifyUpdate(&ctx,buf2,(unsigned int)i))
+                       {
+                       OPENSSL_free(buf2);
+                       goto msg_end;
+                       }
                OPENSSL_free(buf2);
 
                pkey=X509_get_pubkey(x509);