check DSA_sign() return value properly
authorDr. Stephen Henson <steve@openssl.org>
Tue, 1 Dec 2009 18:39:33 +0000 (18:39 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Tue, 1 Dec 2009 18:39:33 +0000 (18:39 +0000)
crypto/dsa/dsa_pmeth.c
ssl/ssl_lib.c
ssl/tls1.h

index 84b77e3bfcd60000e6cf009edc42bd48110b0b2d..4ce91e20c64375899819bdecfb839bb23220d61f 100644 (file)
@@ -132,7 +132,7 @@ static int pkey_dsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
 
        ret = DSA_sign(type, tbs, tbslen, sig, &sltmp, dsa);
 
-       if (ret < 0)
+       if (ret <= 0)
                return ret;
        *siglen = sltmp;
        return 1;
index b3b356d5ab0ac5d3c867da77b1097438015683bc..b611c7cf0176c99f3ceaf71d6fb89492e17ecedb 100644 (file)
@@ -1357,6 +1357,21 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
                j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
                p+=j;
                }
+
+#ifdef OPENSSL_RI_MAGIC
+       if (p == q)
+               return 0;
+       else
+               {
+               /* Bogus "cipher" to send out RI indicator */
+               static SSL_CIPHER ri =
+                       {
+                       0, NULL, OPENSSL_RI_MAGIC, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                       };
+               j = put_cb ? put_cb(&ri,p) : ssl_put_cipher_by_char(s,&ri,p);
+               p+=j;
+               }
+#endif
        return(p-q);
        }
 
index b3cc8f098b7e8a0cb71066711376ca131838b91b..fb6e817176f42a26d9a7909e65892318d87a42b9 100644 (file)
@@ -287,6 +287,13 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
 
 #endif
 
+/* Renegotiation indicator "magic" ciphersuite from
+ * "draft-ietf-tls-renegotiation" (FIXME: put RFC# in here when ready)
+ * FIXME: put correct ciphersuite number in here when available.
+ */
+
+#define OPENSSL_RI_MAGIC                               0x03000FEC
+
 /* PSK ciphersuites from 4279 */
 #define TLS1_CK_PSK_WITH_RC4_128_SHA                    0x0300008A
 #define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA               0x0300008B