summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_gf2m.c11
-rw-r--r--src/lib/libssl/src/crypto/cms/cms_smime.c4
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_vfy.c31
3 files changed, 37 insertions, 9 deletions
diff --git a/src/lib/libssl/src/crypto/bn/bn_gf2m.c b/src/lib/libssl/src/crypto/bn/bn_gf2m.c
index e84729bdad..9b931e04e1 100644
--- a/src/lib/libssl/src/crypto/bn/bn_gf2m.c
+++ b/src/lib/libssl/src/crypto/bn/bn_gf2m.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bn_gf2m.c,v 1.18 2015/02/10 09:50:12 miod Exp $ */ 1/* $OpenBSD: bn_gf2m.c,v 1.18.4.1 2015/06/11 16:09:20 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
4 * 4 *
@@ -745,8 +745,13 @@ BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
745 ubits--; 745 ubits--;
746 } 746 }
747 747
748 if (ubits <= BN_BITS2 && udp[0] == 1) 748 if (ubits <= BN_BITS2) {
749 break; 749 /* See if poly was reducible. */
750 if (udp[0] == 0)
751 goto err;
752 if (udp[0] == 1)
753 break;
754 }
750 755
751 if (ubits < vbits) { 756 if (ubits < vbits) {
752 i = ubits; 757 i = ubits;
diff --git a/src/lib/libssl/src/crypto/cms/cms_smime.c b/src/lib/libssl/src/crypto/cms/cms_smime.c
index 712f08c32f..50a0917465 100644
--- a/src/lib/libssl/src/crypto/cms/cms_smime.c
+++ b/src/lib/libssl/src/crypto/cms/cms_smime.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: cms_smime.c,v 1.12 2014/07/11 12:12:39 miod Exp $ */ 1/* $OpenBSD: cms_smime.c,v 1.12.6.1 2015/06/11 16:09:20 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project. 3 * project.
4 */ 4 */
@@ -132,7 +132,7 @@ do_free_upto(BIO *f, BIO *upto)
132 tbio = BIO_pop(f); 132 tbio = BIO_pop(f);
133 BIO_free(f); 133 BIO_free(f);
134 f = tbio; 134 f = tbio;
135 } while (f != upto); 135 } while (f != NULL && f != upto);
136 } else 136 } else
137 BIO_free_all(f); 137 BIO_free_all(f);
138} 138}
diff --git a/src/lib/libssl/src/crypto/x509/x509_vfy.c b/src/lib/libssl/src/crypto/x509/x509_vfy.c
index c383fda4f2..bbb949f633 100644
--- a/src/lib/libssl/src/crypto/x509/x509_vfy.c
+++ b/src/lib/libssl/src/crypto/x509/x509_vfy.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_vfy.c,v 1.40 2015/02/11 02:17:59 jsing Exp $ */ 1/* $OpenBSD: x509_vfy.c,v 1.40.4.1 2015/06/11 16:09:20 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1650,35 +1650,58 @@ X509_cmp_time(const ASN1_TIME *ctm, time_t *cmp_time)
1650 memcpy(p, str, 10); 1650 memcpy(p, str, 10);
1651 p += 10; 1651 p += 10;
1652 str += 10; 1652 str += 10;
1653 i -= 10;
1653 } else { 1654 } else {
1654 if (i < 13) 1655 if (i < 13)
1655 return 0; 1656 return 0;
1656 memcpy(p, str, 12); 1657 memcpy(p, str, 12);
1657 p += 12; 1658 p += 12;
1658 str += 12; 1659 str += 12;
1660 i -= 12;
1659 } 1661 }
1660 1662
1663 if (i < 1)
1664 return 0;
1661 if ((*str == 'Z') || (*str == '-') || (*str == '+')) { 1665 if ((*str == 'Z') || (*str == '-') || (*str == '+')) {
1662 *(p++) = '0'; 1666 *(p++) = '0';
1663 *(p++) = '0'; 1667 *(p++) = '0';
1664 } else { 1668 } else {
1669 if (i < 2)
1670 return 0;
1665 *(p++) = *(str++); 1671 *(p++) = *(str++);
1666 *(p++) = *(str++); 1672 *(p++) = *(str++);
1673 i -= 2;
1674 if (i < 1)
1675 return 0;
1667 /* Skip any fractional seconds... */ 1676 /* Skip any fractional seconds... */
1668 if (*str == '.') { 1677 if (*str == '.') {
1669 str++; 1678 str++;
1670 while ((*str >= '0') && (*str <= '9')) 1679 i--;
1680 while (i > 1 && (*str >= '0') && (*str <= '9')) {
1671 str++; 1681 str++;
1682 i--;
1683 }
1672 } 1684 }
1673 } 1685 }
1674 *(p++) = 'Z'; 1686 *(p++) = 'Z';
1675 *(p++) = '\0'; 1687 *(p++) = '\0';
1676 1688
1677 if (*str == 'Z') 1689 if (i < 1)
1690 return 0;
1691 if (*str == 'Z') {
1692 if (i != 1)
1693 return 0;
1678 offset = 0; 1694 offset = 0;
1679 else { 1695 } else {
1696 if (i != 5)
1697 return 0;
1680 if ((*str != '+') && (*str != '-')) 1698 if ((*str != '+') && (*str != '-'))
1681 return 0; 1699 return 0;
1700 if (str[1] < '0' || str[1] > '9' ||
1701 str[2] < '0' || str[2] > '9' ||
1702 str[3] < '0' || str[3] > '9' ||
1703 str[4] < '0' || str[4] > '9')
1704 return 0;
1682 offset = ((str[1] - '0') * 10 + (str[2] - '0')) * 60; 1705 offset = ((str[1] - '0') * 10 + (str[2] - '0')) * 60;
1683 offset += (str[3] - '0') * 10 + (str[4] - '0'); 1706 offset += (str[3] - '0') * 10 + (str[4] - '0');
1684 if (*str == '-') 1707 if (*str == '-')