summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* [ruby/stringio] [DOC] Enhanced RDoc for StringIOBurdette Lamar2022-10-211-20/+24
| | | | | | | | | | | | | (https://github.com/ruby/stringio/pull/36) Treats: - #each_codepoint - #gets - #readline (shows up in doc for module IO::generic_readable, not class StringIO) - #each_line https://github.com/ruby/stringio/commit/659aca7fe5
* Unmark Internal IV test as pendingJemma Issroff2022-10-201-4/+1
| | | | Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org>
* [ruby/stringio] [DOC] Enhanced RDoc for StringIOBurdette Lamar2022-10-191-18/+23
| | | | | | | | | | | | | | | (https://github.com/ruby/stringio/pull/35) Treated: - #getc - #getbyte - #ungetc - #ungetbyte - #readchar - #readbyte - #each_char https://github.com/ruby/stringio/commit/6400af8d9f
* [ruby/stringio] [DOC] StringIO doc enhancementsBurdette Lamar2022-10-191-42/+101
| | | | | | | | | | | | | | | | | | | (https://github.com/ruby/stringio/pull/33) Treated: - ::new - ::open - #string - #string= - #close - #close_read - #close_write - #closed? - #closed_read? - #closed_write? - #eof? https://github.com/ruby/stringio/commit/be9b64d739
* [DOC] Fix rdoc-refNobuyoshi Nakada2022-10-191-9/+9
|
* [DOC] Enhanced RDoc for StringIO (#34)Burdette Lamar2022-10-181-31/+52
| | | | | | | | | | | | | | Treated: - #lineno - #lineno= - #binmode - #reopen - #pos - #pos= - #rewind - #seek - #sync - #each_byte
* [ruby/fiddle] Free closures immediatelyAaron Patterson2022-10-181-0/+2
| | | | | | | | | (https://github.com/ruby/fiddle/pull/109) These structs don't need to be freed as part of finalization, so lets free them immediately. https://github.com/ruby/fiddle/commit/8a10ec1152
* [ruby/fiddle] Add support for linker script on LinuxSutou Kouhei2022-10-181-1/+30
| | | | | | | | GitHub: fix https://github.com/ruby/fiddle/pull/107 Reported by nicholas a. evans. Thanks!!! https://github.com/ruby/fiddle/commit/49ea1490df
* [ruby/fiddle] Bump versionSutou Kouhei2022-10-181-1/+1
|
* fiddle: use the old rb_ary_tmp_new() aliasNobuyoshi Nakada2022-10-181-1/+1
| | | | | Fiddle is a gem and has the external upstream which supports older versions of Ruby.
* [ruby/openssl] add document-method for BN#mod_inverseBen Toews2022-10-171-0/+1
| | | | https://github.com/ruby/openssl/commit/5befde7519
* [ruby/openssl] add BN#mod_sqrtBen Toews2022-10-171-0/+8
| | | | https://github.com/ruby/openssl/commit/4619ab3e76
* [ruby/openssl] define BIGNUM_2cr macro for BN function that takes context andBen Toews2022-10-171-12/+15
| | | | | | returns a BN https://github.com/ruby/openssl/commit/4d0971c51c
* [ruby/openssl] Call out insecure PKCS #1 v1.5 default padding for RSABart de Water2022-10-171-4/+8
| | | | https://github.com/ruby/openssl/commit/fd5eaa6dfc
* [ruby/openssl] Use default `IO#timeout` if possible.Samuel Williams2022-10-171-4/+5
| | | | https://github.com/ruby/openssl/commit/471340f612
* [ruby/openssl] Add support to SSL_CTX_set_keylog_callbackChristophe De La Fuente2022-10-171-1/+85
| | | | | | | | | | | | | | | - This callback is invoked when TLS key material is generated or received, in order to allow applications to store this keying material for debugging purposes. - It is invoked with an `SSLSocket` and a string containing the key material in the format used by NSS for its SSLKEYLOGFILE debugging output. - This commit adds the Ruby binding `keylog_cb` and the related tests - It is only compatible with OpenSSL >= 1.1.1. Even if LibreSSL implements `SSL_CTX_set_keylog_callback()` from v3.4.2, it does nothing (see https://github.com/libressl-portable/openbsd/commit/648d39f0f035835d0653342d139883b9661e9cb6) https://github.com/ruby/openssl/commit/3b63232cf1
* [ruby/openssl] ssl: fix "warning: ‘ctx’ may be used uninitialized"Kazuki Yamaguchi2022-10-171-1/+1
| | | | | | | | | The code was introduced by https://github.com/ruby/openssl/commit/65530b887e54 ("ssl: enable generating keying material from SSL sessions", 2022-08-03). This is harmless, but we should avoid it. https://github.com/ruby/openssl/commit/f5b82e814b
* [ruby/openssl] bump version number to 3.1.0.preKazuki Yamaguchi2022-10-172-2/+2
| | | | https://github.com/ruby/openssl/commit/fceb978a5d
* [ruby/openssl] Ruby/OpenSSL 3.0.1Kazuki Yamaguchi2022-10-173-2/+26
| | | | https://github.com/ruby/openssl/commit/e5bbd015dc
* [ruby/openssl] Ruby/OpenSSL 2.2.2Kazuki Yamaguchi2022-10-171-0/+6
| | | | https://github.com/ruby/openssl/commit/de8a644bc4
* [ruby/openssl] Ruby/OpenSSL 2.1.4Kazuki Yamaguchi2022-10-171-0/+10
| | | | https://github.com/ruby/openssl/commit/5316241e61
* [ruby/openssl] pkey/ec: check existence of public key component before exportingKazuki Yamaguchi2022-10-171-0/+4
| | | | | | | | | | | | | i2d_PUBKEY_bio() against an EC_KEY without the public key component trggers a null dereference. This is a regression introduced by commit https://github.com/ruby/openssl/commit/56f0d34d63fb ("pkey: refactor #export/#to_pem and #to_der", 2017-06-14). Fixes https://github.com/ruby/openssl/pull/527#issuecomment-1220504524 Fixes https://github.com/ruby/openssl/issues/369#issuecomment-1221554057 https://github.com/ruby/openssl/commit/f6ee0fa4de
* [ruby/openssl] pkey: restore support for decoding "openssl ecparam -genkey" ↵Kazuki Yamaguchi2022-10-171-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | output Scan through the input for a private key, then fallback to generic decoder. OpenSSL 3.0's OSSL_DECODER supports encoded key parameters. The PEM header "-----BEGIN EC PARAMETERS-----" is used by one of such encoding formats. While this is useful for OpenSSL::PKey::PKey, an edge case has been discovered. The openssl CLI command line "openssl ecparam -genkey" prints two PEM blocks in a row, one for EC parameters and another for the private key. Feeding the whole output into OSSL_DECODER results in only the first PEM block, the key parameters, being decoded. Previously, ruby/openssl did not support decoding key parameters and it would decode the private key PEM block instead. While the new behavior is technically correct, "openssl ecparam -genkey" is so widely used that ruby/openssl does not want to break existing applications. Fixes https://github.com/ruby/openssl/pull/535 https://github.com/ruby/openssl/commit/d486c82833
* [ruby/openssl] pkey: clear error queue before each OSSL_DECODER_from_bio() callKazuki Yamaguchi2022-10-171-4/+7
| | | | | | Fix potential error queue leak. https://github.com/ruby/openssl/commit/3992b6f208
* [ruby/openssl] pkey/dsa: let PKey::DSA.generate choose appropriate q sizeKazuki Yamaguchi2022-10-171-0/+8
| | | | | | | | | | | | | DSA parameters generation via EVP_PKEY_paramgen() will not automatically adjust the size of q value but uses 224 bits by default unless specified explicitly. This behavior is different from the now-deprecated DSA_generate_parameters_ex(), which PKey::DSA.generate used to call. Fixes https://github.com/ruby/openssl/issues/483 Fixes: https://github.com/ruby/openssl/commit/1800a8d5ebaf ("pkey/dsa: use high level EVP interface to generate parameters and keys", 2020-05-17) https://github.com/ruby/openssl/commit/0105975a0b
* [ruby/openssl] hmac: use EVP_PKEY_new_raw_private_key() if availableKazuki Yamaguchi2022-10-172-0/+9
| | | | | | | | | | | | | | | | Current OpenSSL 3.0.x release has a regression with zero-length MAC keys. While this issue should be fixed in a future release of OpenSSL, we can use EVP_PKEY_new_raw_private_key() in place of the problematic EVP_PKEY_new_mac_key() to avoid the issue. OpenSSL 3.0's man page recommends using it regardless: > EVP_PKEY_new_mac_key() works in the same way as > EVP_PKEY_new_raw_private_key(). New applications should use > EVP_PKEY_new_raw_private_key() instead. Fixes https://github.com/ruby/openssl/issues/369#issuecomment-1224912710 https://github.com/ruby/openssl/commit/4293f18b1f
* [ruby/openssl] x509*: fix error queue leak in #extensions= and #attributes= ↵Kazuki Yamaguchi2022-10-174-12/+12
| | | | | | | | | | methods X509at_delete_attr() in OpenSSL master puts an error queue entry if there is no attribute left to delete. We must either clear the error queue, or try not to call it when the list is already empty. https://github.com/ruby/openssl/commit/a0c878481f
* [ruby/openssl] ssl: enable generating keying material from SSL sessionsmadblobfish2022-10-171-0/+44
| | | | | | Add OpenSSL::SSL::SSLSocket#export_keying_material to support RFC 5705 https://github.com/ruby/openssl/commit/65530b887e
* [ruby/openssl] Check if the option is an Hash in `pkey_ctx_apply_options0()`Nobuhiro IMAI2022-10-171-0/+1
| | | | | | causes SEGV if it is an Array or something like that. https://github.com/ruby/openssl/commit/ef23525210
* [ruby/openssl] Pass arguments to check macro presenceAlan Wu2022-10-171-1/+1
| | | | | | | | | X509_STORE_get_ex_new_index() is a macro, so passing just its name to have_func() doesn't detect it. Pass an example call instead. https://github.com/ruby/openssl/commit/8d264d3e60 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
* [ruby/openssl] Check for OpenSSL functions in headersAlan Wu2022-10-171-46/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While building with a custom build of OpenSSL, I noticed in mkmf.log that all the feature detection checks are done using a program lacking an OpenSSL header include. `mkmf` retries using a fallback program when this fails, but that means all the `have_func` calls compile twice when compiling once should suffice. Example log without this commit: have_func: checking for X509_STORE_CTX_get0_cert()... -------------------- yes DYLD_FALLBACK_LIBRARY_PATH=.:../.. "clang -o conftest ... conftest.c:14:57: error: use of undeclared identifier 'X509_STORE_CTX_get0_cert' int t(void) { void ((*volatile p)()); p = (void ((*)()))X509_STORE_CTX_get0_cert; return !p; } ^ 1 error generated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: extern int t(void); 5: int main(int argc, char **argv) 6: { 7: if (argc > 1000000) { 8: int (* volatile tp)(void)=(int (*)(void))&t; 9: printf("%d", (*tp)()); 10: } 11: 12: return !!argv[argc]; 13: } 14: int t(void) { void ((*volatile p)()); p = (void ((*)()))X509_STORE_CTX_get0_cert; return !p; } /* end */ DYLD_FALLBACK_LIBRARY_PATH=.:../.. "clang -o conftest ... checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: extern int t(void); 5: int main(int argc, char **argv) 6: { 7: if (argc > 1000000) { 8: int (* volatile tp)(void)=(int (*)(void))&t; 9: printf("%d", (*tp)()); 10: } 11: 12: return !!argv[argc]; 13: } 14: extern void X509_STORE_CTX_get0_cert(); 15: int t(void) { X509_STORE_CTX_get0_cert(); return 0; } /* end */ The second compilation succeeds. Specify the header for each checked function. https://github.com/ruby/openssl/commit/34ae7d92d0
* openssl: use the old rb_ary_tmp_new() aliasKazuki Yamaguchi2022-10-171-1/+1
| | | | | | openssl has to support older versions of Ruby. Undo the change in ext/openssl/ossl_pkey_ec.c by commit efb91ff19b73 ("Rename rb_ary_tmp_new to rb_ary_hidden_new", 2022-07-25).
* [ruby/psych] Fix missing `abort` callNobuyoshi Nakada2022-10-121-1/+1
| | | | | https://github.com/ruby/psych/commit/de2b98c7b7 Co-authored-by: Olle Jonsson <olle.jonsson@gmail.com>
* [ruby/psych] Abandon when libyaml is not foundNobuyoshi Nakada2022-10-121-8/+5
| | | | https://github.com/ruby/psych/commit/0b89eda398
* [DOC] Replace the external URIs to docs with rdoc-refNobuyoshi Nakada2022-10-121-23/+23
|
* Revert "Revert "This commit implements the Object Shapes technique in CRuby.""Jemma Issroff2022-10-112-0/+9
| | | | This reverts commit 9a6803c90b817f70389cae10d60b50ad752da48f.
* Move `error` from top_stmts and top_stmt to stmtyui-knk2022-10-081-0/+1
| | | | | | | | | | | | | | | | | | | By this change, syntax error is recovered smaller units. In the case below, "DEFN :bar" is same level with "CLASS :Foo" now. ``` module Z class Foo foo. end def bar end end ``` [Feature #19013]
* Try `nil` as default for 'default timeout'. (#6509)Samuel Williams2022-10-084-6/+6
|
* Simplify default argument specification. (#6507)Samuel Williams2022-10-072-11/+4
|
* Add IO#timeout attribute and use it for blocking IO operations. (#5653)Samuel Williams2022-10-077-8/+23
|
* Add --with-libffi-source-dir feature and removed --enable-bundled-libffi ↵Hiroshi SHIBATA2022-10-072-25/+6
| | | | | | | | | option. (#113) https://bugs.ruby-lang.org/issues/18571 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Sutou Kouhei <kou@clear-code.com>
* [ruby/fiddle] closure: follow variable name changeSutou Kouhei2022-10-071-1/+1
| | | | | | GitHub: GH-102 https://github.com/ruby/fiddle/commit/2530496602
* [ruby/fiddle] closure: free resources when an exception is raised in Closure.newSutou Kouhei2022-10-071-13/+43
| | | | | | GitHub: GH-102 https://github.com/ruby/fiddle/commit/81a8a56239
* [ruby/fiddle] Add Fiddle::Closure.create and Fiddle::Closure.freeSutou Kouhei2022-10-072-7/+73
| | | | | | | | | | | | | | | | GitHub: fix GH-102 It's for freeing a closure explicitly. We can't use Fiddle::Closure before we fork the process. If we do it, the process may be crashed with SELinux. See https://github.com/ruby/fiddle/issues/102#issuecomment-1241763091 for details. Reported by Vít Ondruch. Thanks!!! https://github.com/ruby/fiddle/commit/a0ccc6bb1b
* [ruby/fiddle] Add `sym_defined?` methods to test if a symbol is defined ↵Aaron Patterson2022-10-071-4/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://github.com/ruby/fiddle/pull/108) I would like to check if a symbol is defined before trying to access it. Some symbols aren't available on all platforms, so instead of raising an exception, I want to check if it's defined first. Today we have to do: ```ruby begin addr = Fiddle::Handle.sym("something") # do something rescue Fiddle::DLError end ``` I want to write this: ```ruby if Fiddle::Handle.sym_defined?("something") addr = Fiddle::Handle.sym("something") # do something end ``` https://github.com/ruby/fiddle/commit/9d3371de13 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
* [ruby/fiddle] Move "type" constants to `Fiddle::Types` ↵Aaron Patterson2022-10-072-58/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://github.com/ruby/fiddle/pull/112) This helps to reduce repetition in code. Instead of doing "TYPE_*" everywhere, you can do `include Fiddle::Types`, and write the type name directly. This PR is to help reduce repetition when writing Fiddle code. Right now we have to type `TYPE_` everywhere, and you also have to include all of `Fiddle` to access `TYPE_*` constants. With this change, you can just include `Fiddle::Types` and it will shorten your code and also you only have to include those constants. Here is an example before: ```ruby require "fiddle" module MMAP # All Fiddle constants included include Fiddle def self.make_function name, args, ret ptr = Handle::DEFAULT[name] func = Function.new ptr, args, ret, name: name define_singleton_method name, &func.to_proc end make_function "munmap", [TYPE_VOIDP, # addr TYPE_SIZE_T], # len TYPE_INT make_function "mmap", [TYPE_VOIDP, TYPE_SIZE_T, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT], TYPE_VOIDP make_function "mprotect", [TYPE_VOIDP, TYPE_SIZE_T, TYPE_INT], TYPE_INT end ``` After: ```ruby require "fiddle" module MMAP # Only type names included include Fiddle::Types def self.make_function name, args, ret ptr = Fiddle::Handle::DEFAULT[name] func = Fiddle::Function.new ptr, args, ret, name: name define_singleton_method name, &func.to_proc end make_function "munmap", [VOIDP, # addr SIZE_T], # len INT make_function "mmap", [VOIDP, SIZE_T, INT, INT, INT, INT], VOIDP make_function "mprotect", [VOIDP, SIZE_T, INT], INT end ``` We only need to import the type names, and you don't have to type `TYPE_` over and over. I think this makes Fiddle code easier to read. https://github.com/ruby/fiddle/commit/49fa7233e5 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
* [ruby/fiddle] Add constants for unsigned values ↵Aaron Patterson2022-10-076-44/+173
| | | | | | | | | | | | | | | (https://github.com/ruby/fiddle/pull/111) This commit adds constants for unsigned values. Currently we can use `-` to mean "unsigned", but I think having a specific name makes Fiddle more user friendly. This commit continues to support `-`, but introduces negative constants with "unsigned" names I think this will help to eliminate [this code](https://github.com/ruby/ruby/blob/3a56bf0bcc66e14ffe5ec89efc32ecfceed180f4/lib/mjit/c_type.rb#L31-L38) https://github.com/ruby/fiddle/commit/2bef0f1082 Co-authored-by: Sutou Kouhei <kou@clear-code.com>
* [ruby/date] Fix misplaced time zone offset checksNobuyoshi Nakada2022-10-071-2/+2
| | | | https://github.com/ruby/date/commit/d21c69450a
* [ruby/psych] Removed the related condition of --enable-bundled-libyamlHiroshi SHIBATA2022-10-071-6/+1
| | | | https://github.com/ruby/psych/commit/7c211a43c1
* [ruby/psych] --enable-bundled-libyaml config has been removedHiroshi SHIBATA2022-10-071-1/+1
| | | | https://github.com/ruby/psych/commit/447d372dcd