summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/system.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-12-17Switch to using BN_zero() instead of BN_zero_ex()tb1-2/+2
2022-12-17Move benchmark target up a bit and mark it phonytb1-4/+5
2022-12-17Zap some whitespacetb1-2/+2
2022-12-17Merge documentation of UI_null() from OpenSSL 1.1tb1-5/+21
jsing doesn't like it, but it's better than nothing. ok jsing
2022-12-17Document BIO_set_flags(3), BIO_clear_flags(3), BIO_test_flags(3),schwarze1-4/+88
and BIO_get_flags(3).
2022-12-17Link ui_null.c to buildtb1-1/+2
2022-12-17Prepare to provide UI_null()tb3-2/+24
xmlsec needs this, nothing else. Our linkers link libxmlsec1-openssl, only warns and since nothing uses this library in ports, this wasn't noticed for a long time. Reported by Thomas Mitterfellner ok jsing
2022-12-17Provide regress coverage for BN shift functions.jsing2-1/+543
Provide regress coverage for BN_lshift1(), BN_rshift1(), BN_lshift() and BN_rshift(), along with basic benchmarking functionality (run via 'make benchmark').
2022-12-17Revise cipher list regress coverage of SSL_set_security_level().jsing1-21/+43
A SSL_set_security_level() call was added to the cipher list regress, which expects a failure - however, it should succeed and fails for a completely unrelated reason. Rework this regress so that it actually passes and tests for the expected behaviour.
2022-12-17Provide BN_zero()/BN_one() as functions and make BN_zero() always succeed.jsing3-7/+22
BN_zero() is currently implemented using BN_set_word(), which means it can fail, however almost nothing ever checks the return value. A long time ago OpenSSL changed BN_zero() to always succeed and return void, however kept BN_zero as a macro that calls a new BN_zero_ex() function, so that it can be switched back to the "can fail" version. Take a simpler approach - change BN_zero()/BN_one() to functions and make BN_zero() always succeed. This will be exposed in the next bump, at which point we can hopefully also remove the BN_zero_ex() function. ok tb@
2022-12-17X509_check_purpose.3: incorporate feedback from jsingtb1-5/+5
2022-12-16In bio.h rev. 1.54, jsing@ and tb@ provided BIO_callback_fn_ex(3),schwarze1-77/+192
BIO_set_callback_ex(3), BIO_get_callback_ex(3), and BIO_callback_fn(3). Document them, in part by merging from the OpenSSL 1.1.1 branch, which is still under a free license, but heavily tweaked by me, in particular: * mention that BIO_set_callback_arg(3) is misnamed; * keep our more detailed explanation of the "ret" argument; * make the list of callback invocations more readable; * and update the HISTORY section.
2022-12-16Document extension caching of X509_check_purpose()tb1-23/+43
The overwhelming majority of callers of X509_check_purpose() in our tree pass a purpose of -1. In this case X509_check_purpose() acts as a wrapper of x509v3_cache_extensions() which makes sanity checks like non-negativity of ASN.1 integers or canonicity of RFC 3779 extensions as well as checking uniqueness of extensions. from schwarze who beat an initial diff of mine into shape
2022-12-16add a CAVEATS section warning the user to not create cycles;schwarze1-1/+34
OK tb@
2022-12-16Revert BIO_push(3) cycle prevention (bio_lib.c rev. 1.42).schwarze2-39/+7
jsing@ worries that cycle prevention might increase risk because software that is not checking return values (and indeed, not checking is likely common in practice) might silently behave incorrectly with cycle prevention whereas without, it will likely either crash right away through infinite recursion or at least hang in an infinite loop when trying to use the cyclic chain, in both cases making it likely that the bug will be found and fixed. Besides, tb@ points out that BIO_set_next(3) ought to behave as similarly as possible to BIO_push(3), but adding cycle prevention to BIO_set_next(3) would be even less convincing because that function does not provide a return value, encouraging users to expect that it will always succeed. While a safe idiom for checking the success of BIO_set_next(3) could easily be designed, let's be realistic: application software would be highly unlikely to pick up such an idiom.
2022-12-15In curve25519.h rev. 1.4 to 1.7, tb@ and jsing@ providedschwarze1-11/+121
ED25519_keypair(3), ED25519_sign(3), and ED25519_verify(3). Document them.
2022-12-15The argument to ctype functions must be EOF or representable as anflorian1-2/+2
unsigned char. Casting to int is particularly useless because that's what the compiler already does. We need to prevent sign extension, not write down that we want sign extension. OK deraadt, kn, miod, op
2022-12-14In evp.h rev. 1.109 and 1.112, jsing@ and tb@ providedschwarze1-61/+154
EVP_PKEY_new_raw_private_key(3), EVP_PKEY_new_raw_public_key(3), EVP_PKEY_get_raw_private_key(3), and EVP_PKEY_get_raw_public_key(3). Merge the documentation from the OpenSSL 1.1.1 branch, which is still under a free license. I tweaked the text somewhat for conciseness, and argument names for uniformity.
2022-12-14In asn1.h rev. 1.71 and 1.72, jsing@ and tb@ provided ASN1_buf_print(3).schwarze4-5/+78
Document it.
2022-12-12Bump to LibreSSL 3.7.1tb1-3/+3
2022-12-11Add a small blurb on @SECLEVEL=nlibressl-v3.7.0tb1-2/+8
2022-12-10bio chain test: compress some error printingtb1-5/+4
2022-12-10bio chain test: deduplicate chain walking codetb1-52/+40
2022-12-10bio chain test: handle walking of empty chainstb1-27/+15
Rework the loops walking the chains to be correct for empty chains as well. This simplifies the checking at the cost of slightly more initialization and will allow further refactoring in a subsequent check.
2022-12-09bio chain test: add a consistency check for chain lengthstb1-1/+9
2022-12-09bn/Makefile: tidy up and simplifytb1-16/+10
2022-12-09bio chain test: make two errors noisytb1-3/+11
2022-12-09bio chain test: ensure the length of empty chains is 0tb1-3/+9
2022-12-09bio chain test: various minor readability tweakstb1-6/+8
Align initialization in walk_backward() with walk_forward(), fix grammar in a comment and move initialization of oldhead_len in a place consistent with the other length initializations in that function
2022-12-08bio chain test: fix inconsequential off-by-onetb1-2/+2
2022-12-08bio chain test: minor readability tweakstb1-5/+6
2022-12-08bio chain test: rename a few variables for consistencytb1-29/+29
2022-12-08bio chain test: decouple lengths of test chainstb1-59/+89
Add helpers to create and destroy a linear chain of BIOs. Provide two defines for the two lengths of the test chains and make them distinct to rule out coincidences. As a bonus, the code becomes simpler.
2022-12-08bio chain test: refactor link_chains_at()tb1-198/+109
Add helper that validate the chains. This deduplicates a lot of code and makes the heart of the test much easier to read.
2022-12-08bio chain test: lose some do_{,bio_} prefixestb1-12/+12
2022-12-08Split biotest into its three logical partstb4-458/+512
Some parts of this test rely on unportable behavior, so cannot run in portable. This way we can run more tests for portable which is helpful for analysis tools, better coverage, etc.
2022-12-08biotest: Tweak long comment a bittb1-11/+13
2022-12-08Fix copy-paste error that left a paragraph ending in a commatb1-3/+3
2022-12-08Add BIO_push() and BIO_set_next() regress coveragetb1-1/+367
This tests for the behavior changes in bio_lib.c r1.40 and r1.41 and makes sure that BIO_push() and BIO_set_next() act on two chains in the expected and now documented way.
2022-12-08bn_mod_exp test: drop extra parentheses for readabilitytb1-4/+4
2022-12-07Improve the implementation of BIO_push(3) such that it changes nothingschwarze2-6/+39
and reports failure if a call would result in a cycle. The algorithm used was originally suggested by jsing@. Feedback and OK tb@.
2022-12-07Add references to the BIO_{push,pop}(3) exampletb1-3/+8
The reader may not know what digest BIOs, Base64 BIOs and file BIOs are and the relevant function names are non-obvious, hence it's not entirely trivial to find the manuals where they are explained. With these references a reader should be able to turn the example into actual code. ok schwarze
2022-12-07Fix example stringtb1-4/+4
If you want to Base64-encode "Hello World\n" using a BIO, you had better pass "Hello World\n" into it, not something slightly different... While we're touching this, we might as well write it the way K&R did...
2022-12-06Zap extra spacetb1-3/+3
2022-12-06Major rewrite for accuracy and clarity, and document BIO_set_next(3).schwarze1-37/+148
Feedback and OK tb@.
2022-12-06Add a few missing headers and drop a few unused onestb7-20/+20
In bn_test.c include bn_local.h instead of using copy-pasted prototypes.
2022-12-06Make sure BIO_push(3) always preserves all invariants of the prev_bioschwarze1-3/+10
and next_bio fields of all BIO objects in all affected chains, no matter what the arguments are. In particular, if the second argument (the one to be appended) is not at the beginning of its chain, properly detach the beginning of its chain before appending. We have weak indications that this bug might affect real-world code. For example, in FreeRDP, file libfreerdp/crypto/tls.c, function bio_rdp_tls_ctrl(), case BIO_C_SET_SSL, BIO_push(3) is definitely called with a second argument that is *not* at the beginning of its chain. Admittedly, that code is hard to fathom, but it does appear to result in a bogus prev_bio pointer without this patch. The practical impact of this bug in this and other software remains unknown; the consequences might possibly escalate up to use-after-free issues if BIO_pop(3) is afterwards called on corrupted BIO objects. OK tb@
2022-12-06Improve the poorly designed BIO_set_next(3) API to always preserve allschwarze1-3/+18
invariants of the prev_bio and next_bio fields of all BIO objects in all involved chains, no matter which arguments this function is called with. Both real-world uses of this function (in libssl and freerdp) have been audited to make sure this makes nothing worse. We believe libssl behaves correctly before and after the patch (mostly because the second argument is NULL there), and we believe the code in freerdp behaves incorrectly before and after the patch, leaving a prev_bio pointer in place that is becoming bogus, only in a different object before and after the patch. But after the patch, that bogus pointer is due to a separate bug in BIO_push(3), which we are planning to fix afterwards. Joint work with and OK tb@.
2022-12-06arithmethic -> arithmeticjsg1-3/+3
2022-12-05Unbreak rust-openssl-tests on sparc64tb1-8/+4
For the test compilation using the CC crate, base clang is good enough, so we don't need to pull in another heavy dependency just for this test.