diff options
Diffstat (limited to 'src/lib/libssl')
| -rw-r--r-- | src/lib/libssl/src/crypto/bn/bn_gf2m.c | 11 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/cms/cms_smime.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/x509/x509_vfy.c | 31 |
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 == '-') |
