[#103135] [Ruby master Feature#17768] Proposal: Downward assignments — mame@...

Issue #17768 has been reported by mame (Yusuke Endoh).

10 messages 2021/04/01

[#103162] [Ruby master Feature#17773] Alias `Numeric#zero?` and `Float#zero?` as `Numeric#empty?` and `Float#empty?` — sawadatsuyoshi@...

Issue #17773 has been reported by sawa (Tsuyoshi Sawada).

9 messages 2021/04/02

[#103241] [Ruby master Bug#17777] 2.6.7 fails to build on macOS: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99 — eregontp@...

Issue #17777 has been reported by Eregon (Benoit Daloze).

17 messages 2021/04/05

[#103280] [Ruby master Bug#17781] Resolv::DNS RequestID table allocations are never freed, causing DNS lookups to eventually hang — supermathie@...

Issue #17781 has been reported by supermathie (Michael Brown).

9 messages 2021/04/07

[#103305] [Ruby master Feature#17785] Allow named parameters to be keywords — marcandre-ruby-core@...

Issue #17785 has been reported by marcandre (Marc-Andre Lafortune).

21 messages 2021/04/08

[#103310] [Ruby master Feature#17786] Proposal: new "ends" keyword — jzakiya@...

Issue #17786 has been reported by jzakiya (Jabari Zakiya).

13 messages 2021/04/08

[#103317] [Ruby master Bug#17787] Four AIX build issues with xlc compiler and ruby-3.0.1 — lamont@...

Issue #17787 has been reported by lamont (Lamont Granquist).

9 messages 2021/04/08

[#103342] [Ruby master Feature#17790] Have a way to clear a String without resetting its capacity — jean.boussier@...

Issue #17790 has been reported by byroot (Jean Boussier).

14 messages 2021/04/09

[#103386] [Ruby master Bug#17793] `shorten-64-to-32` error for 32-bit Android due to `struct stat` definition — xtkoba+ruby@...

Issue #17793 has been reported by xtkoba (Tee KOBAYASHI).

8 messages 2021/04/11

[#103400] [Ruby master Feature#17795] `before_fork` and `after_fork` callback API — jean.boussier@...

Issue #17795 has been reported by byroot (Jean Boussier).

42 messages 2021/04/12

[#103434] [Ruby master Bug#17799] Seg fault in rb_class_clear_method_cache — stanhu@...

Issue #17799 has been reported by stanhu (Stan Hu).

14 messages 2021/04/13

[#103481] [Ruby master Feature#17808] Feature Request: JS like splat of Object properties as named method parameters — brad.krane@...

Issue #17808 has been reported by Lithium (Brad Krane).

8 messages 2021/04/16

[#103556] [Ruby master Bug#17820] `Errno::EINVAL` from `Process.kill` with available signal on Windows — alex.wayfer@...

Issue #17820 has been reported by AlexWayfer (Alexander Popov).

9 messages 2021/04/22

[#103591] [Ruby master Bug#17827] Monitor is not fiber safe — samuel@...

Issue #17827 has been reported by ioquatix (Samuel Williams).

11 messages 2021/04/25

[#103593] [Ruby master Misc#17828] Deprecate use of master and slave — yyoshida.at.work@...

Issue #17828 has been reported by yyoshida.at.work@gmail.com (Yasuhiro Yoshida).

10 messages 2021/04/26

[#103596] [Ruby master Feature#17830] Add Integer#previous and Integer#prev — rafasoaresms@...

Issue #17830 has been reported by rafasoares (Rafael Soares).

9 messages 2021/04/26

[#103631] [Ruby master Feature#17837] Add support for Regexp timeouts — sam.saffron@...

Issue #17837 has been reported by sam.saffron (Sam Saffron).

45 messages 2021/04/27

[ruby-core:103170] [Ruby master Bug#17729] Fix infinite loop when parsing RUBYLIB with locale-invalid bytes

From: naruse@...
Date: 2021-04-02 07:01:36 UTC
List: ruby-core #103170
Issue #17729 has been updated by naruse (Yui NARUSE).

Backport changed from 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE, 3.0: REQUIRED to 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE, 3.0: DONE

ruby_3_0 1a47de64f44da6d4339ba8b2c5220eeaba82954c merged revision(s) f748b911c9157a0bb86f38280ddfba72a55049b6.

----------------------------------------
Bug #17729: Fix infinite loop when parsing RUBYLIB with locale-invalid bytes
https://bugs.ruby-lang.org/issues/17729#change-91243

* Author: nobu (Nobuyoshi Nakada)
* Status: Closed
* Priority: Normal
* Backport: 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE, 3.0: DONE
----------------------------------------
https://github.com/ruby/ruby/pull/4281
> `ruby.c` sets up the interpreter `$LOAD_PATH` by parsing a path
> separator-delimited list of paths from the `RUBYLIB` environment
> variable. The parser delegates to the C standard library function
> `mblen` to advance a pointer into the result of `getenv("RUBYLIB")` to
> break up the list by path separators.
> 
> `mblen` is a locale-aware API which is documented to return -1 when it
> encounters an invalid byte sequence for the current LOCALE. When
> invoking the `ruby` CLI with a `RUBYLIB` environment variable containing
> an invalid byte sequence or when Ruby is installed to a path containing
> invalid byte sequences, the interpreter will enter an infinite loop
> during its boot sequence.
> 
> For example, passing in an `\xFF` byte when the locale is set to
> `en_US.UTF-8` will result in `mblen` returning -1, which causes the loop
> in `push_include` to spin infinitely.
> 
> I have also seen this bug expressed as attempting to allocate a `String`
> with a negative length, which seems to imply that if the result of
> `getenv` is prefixed in memory with a NUL byte or UTF-8-invalid bytes
> greater than `\x7F`, the -1 return value of `mblen` results in a buffer
> under read.
> 
> I do not believe this buffer under read to be exploitable because
> depending on the byte sequence, the interpreter will infinite loop or
> the loop will terminate with a negative pointer offset, which when used
> to compute the capacity of an `RString`, will result in an
> `ArgumentError` for a negative capacity.
> 
> The fix is to not treat the result of `getenv` as a locale-encoded
> string. The return values of `getenv` are platform strings whose only
> guarantee is that they are NUL-terminated.
> 
> This fix is applied in `push_include` and the CYGWIN target-specific
> `push_include_cygwin`.
> 
> After this patch is applied, `RUBYLIB` with invalid UTF-8 bytes is
> parsed properly with a UTF-8 locale:
> 
> ```console
> $ env RUBYLIB="$(echo -ne "\xFF")" LOCALE="en_US.UTF-8" LC_ALL="en_US.UTF-8" ./ruby -e 'puts $LOAD_PATH.map(&:inspect)'
> `RubyGems' were not loaded.
> `did_you_mean' was not loaded.
> "\xFF"
> "/usr/local/lib/ruby/site_ruby/3.1.0"
> "/usr/local/lib/ruby/site_ruby/3.1.0/x86_64-darwin19"
> "/usr/local/lib/ruby/site_ruby"
> "/usr/local/lib/ruby/vendor_ruby/3.1.0"
> "/usr/local/lib/ruby/vendor_ruby/3.1.0/x86_64-darwin19"
> "/usr/local/lib/ruby/vendor_ruby"
> "/usr/local/lib/ruby/3.1.0"
> "/usr/local/lib/ruby/3.1.0/x86_64-darwin19"
> ```



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next