summaryrefslogtreecommitdiffstats
path: root/crypto
AgeCommit message (Collapse)Author
2016-08-22Fix overflow check in BN_bn2dec()Kazuki Yamaguchi
Fix an off by one error in the overflow check added by 07bed46f332fc ("Check for errors in BN_bn2dec()"). Reviewed-by: Stephen Henson <steve@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (cherry picked from commit 099e2968ed3c7d256cda048995626664082b1b30)
2016-08-22RT2676: Reject RSA eponent if even or 1Rich Salz
Also, re-organize RSA check to use goto err. Try all checks, not just stopping at first (via Richard Levitte) Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 464d59a5bb5811f7671e2bd37f41d610606b829d)
2016-08-22VMS: Use strict refdef extern model when building library object filesRichard Levitte
Most of the time, this isn't strictly needed. However, in the default extern model (called relaxed refdef), symbols are treated as weak common objects unless they are initialised. The librarian doesn't include weak symbols in the (static) libraries, which renders them invisible when linking a program with said those libraries, which is a problem at times. Using the strict refdef model is much more like standard C on all other platforms, and thereby avoid the issues that come with the relaxed refdef model. Note: this doesn't apply to VAX C. It's possible that this will make OpenSSL building with VAX C difficult some time in the future if it isn't already. However, VAX C is a very old compiler that we don't expect to see too often, as DEC C (a.k.a VMS C) should have replaced it a long time ago. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-22bn/asm/x86[_64]-mont*.pl: implement slightly alternative page-walking.Andy Polyakov
Original strategy for page-walking was adjust stack pointer and then touch pages in order. This kind of asks for double-fault, because if touch fails, then signal will be delivered to frame above adjusted stack pointer. But touching pages prior adjusting stack pointer would upset valgrind. As compromise let's adjust stack pointer in pages, touching top of the stack. This still asks for double-fault, but at least prevents corruption of neighbour stack if allocation is to overstep the guard page. Also omit predict-non-taken hints as they reportedly trigger illegal instructions in some VM setups. Reviewed-by: Richard Levitte <levitte@openssl.org> (cherry picked from commit 3ba1ef829cf3dd36eaa5e819258d90291c6a1027)
2016-08-21ec/ecp_nistz256.c: get is_one on 32-bit platforms right.Andy Polyakov
Thanks to Brian Smith for reporting this. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-21Fix incorrect return argument.Rich Salz
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
2016-08-20Fix off by 1 in ASN1_STRING_set()Kurt Roeckx
Reviewed-by: Rich Salz <rsalz@openssl.org> MR: #3176 (cherry picked from commit a73be798ced572a988d455d961a2387f6eccb549)
2016-08-19Fix NULL-return checks in 1.0.2Rich Salz
RT4386: Add sanity checks for BN_new() RT4384: Missing Sanity Checks for RSA_new_method() RT4384: Missing Sanity Check plus potential NULL pointer deref RT4382: Missing Sanity Check(s) for BUF_strdup() RT4380: Missing Sanity Checks for EVP_PKEY_new() RT4377: Prevent potential NULL pointer dereference RT4375: Missing sanity checks for OPENSSL_malloc() RT4374: Potential for NULL pointer dereferences RT4371: Missing Sanity Check for malloc() RT4370: Potential for NULL pointer dereferences Also expand tabs, make update, typo fix (rsalz) Minor tweak by Paul Dale. Some minor internal review feedback. Reviewed-by: Richard Levitte <levitte@openssl.org>
2016-08-19VSI submission: RAND fixupsRichard Levitte
- make the VMS version of RAND_poll() faster and more secure - avoid pointer size warnings with setvbuf() Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-19VSI submission: make better use of item lists in o_time.cRichard Levitte
Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-19VSI submission: avoid pointer size warnings in mem.cRichard Levitte
Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-19evp_test.c: avoid warning from having a pointer difference returned as intRichard Levitte
Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-16make update to have PEM_R_HEADER_TOO_LONG definedRichard Levitte
Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-16Limit reads in do_b2i_bio()Dr. Stephen Henson
Apply a limit to the maximum blob length which can be read in do_d2i_bio() to avoid excessive allocation. Thanks to Shi Lei for reporting this. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 66bcba145740e4f1210499ba6e5033035a2a4647)
2016-08-16Check for errors in BN_bn2dec()Dr. Stephen Henson
If an oversize BIGNUM is presented to BN_bn2dec() it can cause BN_div_word() to fail and not reduce the value of 't' resulting in OOB writes to the bn_data buffer and eventually crashing. Fix by checking return value of BN_div_word() and checking writes don't overflow buffer. Thanks to Shi Lei for reporting this bug. CVE-2016-2182 Reviewed-by: Tim Hudson <tjh@openssl.org> (cherry picked from commit 07bed46f332fce8c1d157689a2cdf915a982ae34) Conflicts: crypto/bn/bn_print.c
2016-08-16Check for errors in a2d_ASN1_OBJECT()Dr. Stephen Henson
Check for error return in BN_div_word(). Reviewed-by: Tim Hudson <tjh@openssl.org> (cherry picked from commit 8b9afbc0fc7f8be0049d389d34d9416fa377e2aa)
2016-08-11sha/asm/sha1-x86_64.pl: fix crash in SHAEXT code on Windows.Andy Polyakov
RT#4530 Reviewed-by: Tim Hudson <tjh@openssl.org> (cherry picked from commit 7123aa81e9fb19afb11fdf3850662c5f7ff1f19c)
2016-08-05Sanity check input length in OPENSSL_uni2asc().Dr. Stephen Henson
Thanks to Hanno Böck for reporting this bug. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 39a43280316f1b9c45be5ac5b04f4f5c3f923686) Conflicts: crypto/pkcs12/p12_utl.c
2016-08-05Leak fixes.Dr. Stephen Henson
Fix error path leaks in a2i_ASN1_STRING(), a2i_ASN1_INTEGER() and a2i_ASN1_ENUMERATED(). Thanks to Shi Lei for reporting these issues. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-04Return error when trying to print invalid ASN1 integerKurt Roeckx
GH: #1322 (cherry picked from commit 5e3553c2de9a365479324b8ba8b998f0cce3e527) Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Stephen Henson <steve@openssl.org>
2016-08-04Limit recursion depth in old d2i_ASN1_bytes functionDr. Stephen Henson
Thanks to Shi Lei for reporting this bug. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-04Check for overflows in i2d_ASN1_SET()Dr. Stephen Henson
Thanks to Shi Lei for reporting this issue. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-04Limit status message sisze in ts_get_status_checkDr. Stephen Henson
Thanks to Shi Lei for reporting this issue. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 20fc103f782bb0bcd41d211c6423187b02146b9d) Conflicts: include/openssl/ts.h
2016-08-03Don't check any revocation info on proxy certificatesRichard Levitte
Because proxy certificates typically come without any CRL information, trying to check revocation on them will fail. Better not to try checking such information for them at all. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 790555d6756285b3ec18e3efbb195cf33f217d8f)
2016-08-03Calculate sequence length properly.Dr. Stephen Henson
Use correct length in old ASN.1 indefinite length sequence decoder (only used by SSL_SESSION). This bug was discovered by Hanno Böck using libfuzzer. Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-02include <limits.h>Dr. Stephen Henson
Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-08-02Check for overflows in ASN1_object_size().Dr. Stephen Henson
Reviewed-by: Richard Levitte <levitte@openssl.org> (cherry picked from commit e9f17097e9fbba3e7664cd67e54eebf2bd438863)
2016-08-02Check for overlows and error return from ASN1_object_size()Dr. Stephen Henson
Reviewed-by: Richard Levitte <levitte@openssl.org> (cherry picked from commit 56f9953c846204cb3251ab27605e403c7444fd72)
2016-07-29Fix CRL time comparison.Dr. Stephen Henson
Thanks to David Benjamin <davidben@google.com> for reporting this bug. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit e032117db251968bd09badc7d4718c2497302e55)
2016-07-26Note cipher BIO write errors too.Dr. Stephen Henson
Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 976ef6adcc157233fb641ca99e2424630ef1814f) Conflicts: crypto/evp/bio_enc.c
2016-07-26Set error if EVP_CipherUpdate fails.Dr. Stephen Henson
Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit ee6ce5cc368574c0b0b470e61ee2f82a0efadbb7) Conflicts: crypto/evp/bio_enc.c
2016-07-22Use newest CRL.Dr. Stephen Henson
If two CRLs are equivalent then use the one with a later lastUpdate field: this will result in the newest CRL available being used. RT#4615 Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 626aa24849be549b7ef4f049d8427989940c8a37)
2016-07-22Fix OOB read in TS_OBJ_print_bio().Dr. Stephen Henson
TS_OBJ_print_bio() misuses OBJ_txt2obj: it should print the result as a null terminated buffer. The length value returned is the total length the complete text reprsentation would need not the amount of data written. CVE-2016-2180 Thanks to Shi Lei for reporting this bug. Reviewed-by: Matt Caswell <matt@openssl.org> (cherry picked from commit 0ed26acce328ec16a3aa635f1ca37365e8c7403a)
2016-07-20OCSP_request_add0_id() inconsistent error returnTodd Short
There are two failure cases for OCSP_request_add_id(): 1. OCSP_ONEREQ_new() failure, where |cid| is not freed 2. sk_OCSP_ONEREQ_push() failure, where |cid| is freed This changes makes the error behavior consistent, such that |cid| is not freed when sk_OCSP_ONEREQ_push() fails. OpenSSL only takes ownership of |cid| when the function succeeds. Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1289) (cherry picked from commit 415e7c488e09119a42be24129e38ddd43524ee06)
2016-07-19Check and print out boolean type properly.Dr. Stephen Henson
If underlying type is boolean don't check field is NULL. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit ad72d9fdf7709ddb97a58d7d45d755e6e0504b96)
2016-07-18Fix print of ASN.1 BIGNUM type.Dr. Stephen Henson
The ASN.1 BIGNUM type needs to be handled in a custom way as it is not a generic ASN1_STRING type. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 3cea73a7fcaaada1ea0ee4b4353ed0176fee1112) Conflicts: crypto/asn1/x_bignum.c
2016-07-16Remove the silly CVS markers from LPdir_*.cRichard Levitte
Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 28e90f69fbcdcd3c06359a53adceb2dbdfaba614)
2016-07-15Fix ASN.1 private encode of EC_KEY to not change the input keyRichard Levitte
RT#4611 Reviewed-by: Stephen Henson <steve@openssl.org> (cherry picked from commit b8a7bd83e68405fdf595077973035ac6fe24cb97)
2016-07-06Fix compilation with CMS disabledOrgad Shaneh
Reviewed-by: Kurt Roeckx <kurt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1293)
2016-07-06Don't indicate errors during initial adb decode.Dr. Stephen Henson
Reviewed-by: Tim Hudson <tjh@openssl.org> (cherry picked from commit b385889640517531a9cfeb672b15db7089b1bbb8)
2016-07-05remove double initialization of cryptodev engineCristian Stoica
cryptodev engine is initialized together with the other engines in ENGINE_load_builtin_engines. The initialization done through OpenSSL_add_all_algorithms is redundant. Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com> Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
2016-07-01SPARC assembly pack: enforce V8+ ABI constraints.Andy Polyakov
Even though it's hard to imagine, it turned out that upper half of arguments passed to V8+ subroutine can be non-zero. ["n" pseudo-instructions, such as srln being srl in 32-bit case and srlx in 64-bit one, were implemented in binutils 2.10. It's assumed that Solaris assembler implemented it around same time, i.e. 2000.] Reviewed-by: Richard Levitte <levitte@openssl.org> (cherry picked from commit f198cc43a0eca4bf1a8e7f60c51af560f4346dc8)
2016-06-30Convert memset calls to OPENSSL_cleanseMatt Caswell
Ensure things really do get cleared when we intend them to. Addresses an OCAP Audit issue. Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-06-29Fix proxy certificate pathlength verificationRichard Levitte
While travelling up the certificate chain, the internal proxy_path_length must be updated with the pCPathLengthConstraint value, or verification will not work properly. This corresponds to RFC 3820, 4.1.4 (a). Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-06-29Check that the subject name in a proxy cert complies to RFC 3820Richard Levitte
The subject name MUST be the same as the issuer name, with a single CN entry added. RT#1852 Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-06-27Change usage of RAND_pseudo_bytes to RAND_bytesMatt Caswell
RAND_pseudo_bytes() allows random data to be returned even in low entropy conditions. Sometimes this is ok. Many times it is not. For the avoidance of any doubt, replace existing usage of RAND_pseudo_bytes() with RAND_bytes(). Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-06-24Ensure HMAC key gets cleansed after useMatt Caswell
aesni_cbc_hmac_sha256_ctrl() and aesni_cbc_hmac_sha1_ctrl() cleanse the HMAC key after use, but static int rc4_hmac_md5_ctrl() doesn't. Fixes an OCAP Audit issue. Reviewed-by: Andy Polyakov <appro@openssl.org> (cherry picked from commit 0def528bc502a888a3f4ef3c38ea4c5e69fd7375)
2016-06-23Fix ASN1_STRING_to_UTF8 could not convert NumericStringMatt Caswell
tag2nbyte had -1 at 18th position, but underlying ASN1_mbstring_copy supports NumericString. tag2nbyte is also used in do_print_ex which will not be broken by setting 1 at 18th position of tag2nbyte Reviewed-by: Stephen Henson <steve@openssl.org> (cherry picked from commit d6079a87db58ad17550b5d00a74512464e6a029e)
2016-06-21RT3752: Add FIPS callback for thread idJohn Foley
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
2016-06-20RT3925: Remove trailing semi from #define's.Dr. Matthias St. Pierre
Reviewed-by: Andy Polyakov <appro@openssl.org>