[ruby-core:68992] [Ruby trunk - Bug #11096] 'private' access control bypassed when ||= is used

From: nobu@...
Date: 2015-04-26 12:43:54 UTC
List: ruby-core #68992
Issue #11096 has been updated by Nobuyoshi Nakada.


Seems opposite of [Bug #10060].

----------------------------------------
Bug #11096: 'private' access control bypassed when ||=3D is used
https://bugs.ruby-lang.org/issues/11096#change-52253

* Author: Piotr Soko=C5=82owski
* Status: Open
* Priority: Normal
* Assignee:=20
* ruby -v: ruby 2.3.0dev (2015-04-24 trunk 50382) [x86_64-linux]
* Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED
----------------------------------------
Problematic code

~~~ruby
class A
  def aa
    self.bb ||=3D 0
  end

  private

  def bb
    1
  end
end

A.new.aa
~~~
On 2.0 and 2.1 this produces 'NoMethodError: private method `bb' called for=
'. But since 2.2 this works and return '1'. Checked also on ruby-head from =
rvm.
This is similar #9907 but this allows to execute private methods by pretend=
ing that setter might be used.



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

In This Thread

Prev Next