Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-03-19 | crypto: Fix bug in ng_api | Hans Nilsson | |
2019-03-19 | crypto: Better error descriptions | Hans Nilsson | |
2019-03-19 | crypto: Fix bug for older cryptolib | Hans Nilsson | |
2019-03-19 | crypto: Fix leak for eddsa detected by Valgrind | Hans Nilsson | |
2019-03-19 | crypto: Testcase for TLS using new API | Hans Nilsson | |
2019-03-19 | crypto: Rename SSL special functions | Hans Nilsson | |
to crypto_init_dyn_iv/3 and crypto_update_dyn_iv/3 | |||
2019-03-19 | crypto: New function for SSL app | Hans Nilsson | |
2019-03-19 | crypto: Remove compat specials from crypto_init | Hans Nilsson | |
2019-03-19 | crypto: Exceptions as error return in api_ng | Hans Nilsson | |
2019-03-19 | crypto: Relocate the new api code inside the crypto.erl file | Hans Nilsson | |
2019-03-19 | crypto: Cleaning of comments + spec fixing | Hans Nilsson | |
2019-03-19 | crypto: Remove unused variables in test case | Hans Nilsson | |
2019-03-19 | crypto: Test fixes for stream api emulated by the new api | Hans Nilsson | |
The test case for the stream api creates one initial state with stream_init/3 That initial state is then used for a series of encrypts, and for a series of decrypts. That is not possible any more since the changes are saved in the nif reference. | |||
2019-03-19 | crypto: Shrink aes.c,h (remove aes_ctr_stream_* funcs) | Hans Nilsson | |
2019-03-19 | crypto: Remove chacha20.c,h and rc4.c,h | Hans Nilsson | |
Replaced by api_ng.c | |||
2019-03-19 | crypto: Use/implement new funcs for stream-api | Hans Nilsson | |
2019-03-19 | crypto: Test the new api | Hans Nilsson | |
2019-03-19 | crypto: Remove block.c and block.h | Hans Nilsson | |
Replaced by api_ng.c | |||
2019-03-19 | crypto: Fix syntax error in ASSERT | Hans Nilsson | |
2019-03-19 | crypto: Implement crypto one-shot | Hans Nilsson | |
Also: Compatibility functions for aes_ctr in historic crypto libs | |||
2019-03-19 | crypto: Remove condition of block size | Hans Nilsson | |
Unnecessary, because the underlying crypto libraries handles this case. Also: - Relax the condition of binary Key and IV -Fix bug for empty data on historic cryptolibs because tests fails for empty data on at least aes_cfb8 on OpenSSL 0.9.8h. It does not fail on OpenSSL 0.9.8zh. | |||
2019-03-19 | Merge branch 'john/compiler/fix-eq-type-infererence-in-validator/ERL-886' | John Högberg | |
* john/compiler/fix-eq-type-infererence-in-validator/ERL-886: beam_validator: Infer types on both sides of '=:=' | |||
2019-03-18 | Merge pull request #2114 from se-apc/strip_fix | John Högberg | |
Allow list of chunks to be given to strip*() OTP-15680 | |||
2019-03-18 | Merge branch 'ingela/ssl/public_key/verify_fun-doc-error/ERL-887' | Ingela Anderton Andin | |
* ingela/ssl/public_key/verify_fun-doc-error/ERL-887: public_key: Correct documentation of verify_fun | |||
2019-03-18 | public_key: Correct documentation of verify_fun | Ingela Anderton Andin | |
2019-03-18 | lib/compiler/scripts/smoke: Force a local hex | Björn Gustavsson | |
The script would hang if no local hex had been installed previously. | |||
2019-03-18 | Merge branch 'peterdmv/ssl/client-auth/OTP-15591' | Péter Dimitrov | |
* peterdmv/ssl/client-auth/OTP-15591: ssl: Improve ssl logging ssl: Test handling of signature algorithms ssl: Handle unencrypted Alert (Illegal Parameter) ssl: Improve verification of received Certificate ssl: Fix Alert logging ssl: Fix get_handshake_context/2 ssl: Test HelloRetryRequest with client auth ssl: Verify signature algorithm in CV ssl: Verify CertificateVerify ssl: Test client authentication with certificate ssl: Validate client certificates (TLS 1.3) ssl: Test client authentication (empty cert) ssl: Implement state 'wait_cert' ssl: Add ssl logger support for CertificateRequest ssl: Fix ssl alerts Change-Id: Id4ba14d373f116038a7cb3ff9fc33faed23031c8 | |||
2019-03-18 | Merge branch 'hans/crypto/fix_chacha20_bug/OTP-15678' | Hans Nilsson | |
* hans/crypto/fix_chacha20_bug/OTP-15678: crypto: Disable chacha20 if OpenSSL 1.1.0-1.1.0c | |||
2019-03-18 | beam_validator: Infer types on both sides of '=:=' | John Högberg | |
2019-03-15 | crypto: Disable chacha20 if OpenSSL 1.1.0-1.1.0c | Hans Nilsson | |
due to a bug. The cipher first appeared in 1.1.0 | |||
2019-03-15 | crypto: Fix bug in error return for crypto:poly1305/2 | Hans Nilsson | |
Returned the atom notsup instead of the exception notsup. | |||
2019-03-15 | Merge branch 'sverker/ets-select-fixation-owner-change-bug/OTP-15672' | Sverker Eriksson | |
* sverker/ets-select-fixation-owner-change-bug/OTP-15672: erts: Fix ets:select table fixation leak at owner change erts: Refactor common things into traverse_context_t stdlib: Clarify docs for ets:info(_, safe_fixed) | |||
2019-03-14 | ssl: Improve ssl logging | Péter Dimitrov | |
Remove function ssl:set_log_level/1. Its functionality is already implemented by logger:set_application_level/2. Set log level for ssl modules to debug at application start. Former implementation required an extra call to logger:set_application_level/2 (beside setting ssl option {log_level, debug}) to enable debug logging. Change-Id: Id21be7fd58915e11124cc136bb92d8a7526b8a74 | |||
2019-03-14 | ssl: Test handling of signature algorithms | Péter Dimitrov | |
Change-Id: I433924f9c590efa94423db5df52dd3f5d53d9d20 | |||
2019-03-14 | ssl: Handle unencrypted Alert (Illegal Parameter) | Péter Dimitrov | |
Handle unencrypted 'Illegal Parameter' Alerts from openssl s_client when the server's connection states are already stepped into traffic encryption. Change-Id: I10951a9061e6f4b13d8ddb8ab99f8a812a483113 | |||
2019-03-14 | ssl: Improve verification of received Certificate | Péter Dimitrov | |
Validate peer certificate against supported signature algorithms. Send 'Hanshake Failure' Alert if signature algorithm is not supported by the server. Change-Id: Iad428aad337f0f9764d23404c203f966664c4555 | |||
2019-03-14 | ssl: Fix Alert logging | Péter Dimitrov | |
Report the role of the peer when logging incoming Alerts. Change-Id: I7eec46bc36f9080f5087b6a38e7f14ac628fe286 | |||
2019-03-13 | Merge pull request #2177 from bjorng/bjorn/erts/tail-recursive-bifs | Björn Gustavsson | |
Optimize tail-recursive calls of BIFs OTP-15674 | |||
2019-03-12 | Merge branch 'maint' | Henrik Nord | |
* maint: Updated OTP version Prepare release | |||
2019-03-11 | erts: Fix ets:select table fixation leak at owner change | Sverker Eriksson | |
Symtom: ETS table remains fixed after finished ets:select* call. Problem: The decision to unfix table after a yielding ets:select* is based on table ownership, but ownership might have changed while ets:select* was yielding. Solution: Remember and pass along whether table was fixed when the traversal started. | |||
2019-03-11 | stdlib: Clarify docs for ets:info(_, safe_fixed) | Sverker Eriksson | |
It's about the *last* time the table went from unfixed to fixed, not the first time it ever did. | |||
2019-03-11 | Merge branch 'john/compiler/float-opt-guard-fix' | Björn Gustavsson | |
* john/compiler/float-opt-guard-fix: beam_ssa_opt: Fix crash in ssa_opt_float | |||
2019-03-11 | Prepare release | Erlang/OTP | |
2019-03-09 | Optimize tail-recursive calls of BIFs | Björn Gustavsson | |
BEAM currently does not call BIFs at the end of a function in a tail-recursive way. That is, when calling a BIF at the end of a function, the BIF is first called, and then the stack frame is deallocated, and then control is transferred to the caller. If there is no stack frame when a BIF is called in the tail position, the loader will emit a sequence of three instructions: first an instruction that allocates a stack frame and saves the continuation pointer (`allocate`), then an instruction that calls the BIF (`call_bif`), and lastly an instruction that deallocates the stack frame and returns to the caller (`deallocate_return`). The old compiler would essentially allocate a stack frame for each clause in a function, so it would not be that common that a BIF was called in the tail position when there was no stack frame, so the three-instruction sequence was deemed acceptable. The new compiler only allocates stack frames when truly needed, so the three-instruction BIF call sequence has become much more common. This commit introduces a new `call_bif_only` instruction so that only one instruction will be needed when calling a BIF in the tail position when there is no stack frame. This instruction is also used when there is a stack frame to make it possible to deallocate the stack frame **before** calling the BIF, which may make a subsequent garbage collection at the end of the BIF call cheaper (copying less garbage). The one downside of this change is that the function that called the BIF will not be included in the stack backtrace (similar to how a tail-recursive call to an Erlang function will not be included in the backtrace). That was the quick summary of the commit. Here comes a detailed look at how BIF calls are translated by the loader. The first example is a function that calls `setelement/3` in the tail position: update_no_stackframe(X) -> setelement(5, X, new_value). Here is the BEAM code: {function, update_no_stackframe, 1, 12}. {label,11}. {line,[...]}. {func_info,{atom,t},{atom,update_no_stackframe},1}. {label,12}. {move,{x,0},{x,1}}. {move,{atom,new_value},{x,2}}. {move,{integer,5},{x,0}}. {line,[...]}. {call_ext_only,3,{extfunc,erlang,setelement,3}}. Because there is no stack frame, the `call_ext_only` instruction will be used to call `setelement/3`: {call_ext_only,3,{extfunc,erlang,setelement,3}}. The loader will transform this instruction to a three-instruction sequence: 0000000020BD8130: allocate_tt 0 3 0000000020BD8138: call_bif_e erlang:setelement/3 0000000020BD8148: deallocate_return_Q 0 Using the `call_bif_only` instruction introduced in this commit, only one instruction is needed: 000000005DC377F0: call_bif_only_e erlang:setelement/3 `call_bif_only` calls the BIF and returns to the caller. Now let's look at a function that already has a stack frame when `setelement/3` is called: update_with_stackframe(X) -> foobar(X), setelement(5, X, new_value). Here is the BEAM code: {function, update_with_stackframe, 1, 14}. {label,13}. {line,[...]}. {func_info,{atom,t},{atom,update_with_stackframe},1}. {label,14}. {allocate,1,1}. {move,{x,0},{y,0}}. {line,[...]}. {call,1,{f,16}}. {move,{y,0},{x,1}}. {move,{atom,new_value},{x,2}}. {move,{integer,5},{x,0}}. {line,[...]}. {call_ext_last,3,{extfunc,erlang,setelement,3},1}. Since there is a stack frame, the `call_ext_last` instruction will be used to deallocate the stack frame and call the function: {call_ext_last,3,{extfunc,erlang,setelement,3},1}. Before this commit, the loader would translate this instruction to: 0000000020BD81B8: call_bif_e erlang:setelement/3 0000000020BD81C8: deallocate_return_Q 1 That is, the BIF is called before deallocating the stack frame and returning to the calling function. After this commit, the loader will translate the `call_ext_last` like this: 000000005DC37868: deallocate_Q 1 000000005DC37870: call_bif_only_e erlang:setelement/3 There are still two instructions, but now the stack frame will be deallocated before calling the BIF, which could make the potential garbage collection after the BIF call slightly more efficient (copying less garbage). We could have introduced a `call_bif_last` instruction, but the code for calling a BIF is relatively large and there does not seem be a practical way to share the code between `call_bif` and `call_bif_only` (since the difference is at the end, after the BIF call). Therefore, we did not want to clone the BIF calling code yet another time to make a `call_bif_last` instruction. | |||
2019-03-08 | Allow list of chunks to be given to strip*() | Michael Schmidt | |
This allows extra chunks to be preserved for languages such as Elixir | |||
2019-03-08 | Merge branch 'maint' | Péter Dimitrov | |
* maint: inets: Fix handling of erl_script_timeout Change-Id: Ie6028000b0bd45307477d837f63c51b2620faaea | |||
2019-03-08 | Merge branch 'peterdmv/inets/httpd_erl_script_timeout/ERIERL-321/OTP-15669' ↵ | Péter Dimitrov | |
into maint * peterdmv/inets/httpd_erl_script_timeout/ERIERL-321/OTP-15669: inets: Fix handling of erl_script_timeout Change-Id: I6a90408de48df6b8b01f44e0b273507bcec27b13 | |||
2019-03-08 | inets: Fix handling of erl_script_timeout | Péter Dimitrov | |
When httpd was started with 'erl_script_timeout', the value of the option was converted to milliseconds before storage. Subsequent calls to httpd:info/1 returned the input value multiplied by 1000. This change fixes the handing of erl_script_timeout by storing the timeout in seconds and converting it to milliseconds before usage. Change-Id: Ic308d83b59ad0884e053f096f995754c89adcbf4 | |||
2019-03-08 | Merge branch 'rickard/deprecations-removals-fix' | Rickard Green | |
* rickard/deprecations-removals-fix: Better erl_interface deprecation warning implementation | |||
2019-03-08 | beam_ssa_opt: Fix crash in ssa_opt_float | John Högberg | |
For reasons better explained in the source code, ssa_opt_float skips optimizing inside guards but it failed to do so consistently; while the pass never processed guard blocks, it was still possible to erroneously defer error checking to a guard block, crashing the compiler once it realized its state was invalid. |