[#28681] ブロックパラメータと多値について — Takaaki Tateishi <ttate@...>

11 messages 2006/06/02

[#28708] 1.8.5 release schedule? — URABE Shyouhei <root@...>

というわけで今日の基調講演で8月に1.8.5が出ることになったわけですが。

105 messages 2006/06/10
[#28709] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/10

まつもと ゆきひろです

[#28711] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/11

卜部です。

[#28751] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/19

卜部です。

[#28752] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/19

まつもと ゆきひろです

[#28753] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/19

卜部です。

[#28754] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/19

まつもと ゆきひろです

[#28813] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/23

卜部です。

[#28818] ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/06/24

まつもと ゆきひろです

[#28819] Re: ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/06/24

卜部です。

[#28820] Re: ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — Kouhei Yanagita <yanagi@...> 2006/06/24

柳田です。

[#28821] udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <y7vnup05.wl%yanagi@shakenbu.org>,

[#28823] Re: udp test with ruby 1.8.5 preview1 on cygwin — Kouhei Yanagita <yanagi@...> 2006/06/24

> いちおう問題の切り分けをするために確認したいんですが、その環

[#28824] Re: udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <veqrun77.wl%yanagi@shakenbu.org>,

[#28825] Re: udp test with ruby 1.8.5 preview1 on cygwin — Kouhei Yanagita <yanagi@...> 2006/06/24

mswin32 版ではどうなるのだろうと思って

[#28833] Re: udp test with ruby 1.8.5 preview1 on cygwin — info@... 2006/06/24

Cygwin @ WindowsXP SP2 です。

[#28834] Re: udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <449D66EC.8050405@cyanet.jp>,

[#29120] Re: 1.8.5 release schedule? — "U.Nakamura" <usa@...> 2006/07/24

こんにちは、なかむら(う)です。

[#29121] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/07/24

まつもと ゆきひろです

[#29128] bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/07/25

卜部です。

[#29133] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/07/26

まつもと ゆきひろです

[#29144] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/07/26

卜部です。

[#29146] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/07/26

まつもと ゆきひろです

[#29185] 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/04

卜部です。

[#29186] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/04

まつもと ゆきひろです

[#29225] Re: 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/08

卜部です。

[#29226] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/08

まつもと ゆきひろです

[#29228] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/08

まつもと ゆきひろです

[#29231] Re: 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/08

卜部です。

[#28718] binding の仕様変更? or バグ? — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

15 messages 2006/06/12

[#28744] rational 1.08 — Tadayoshi Funaba <tadf@...>

ふなばです。

27 messages 2006/06/18
[#28773] Re: rational 1.08 — Shin-ichiro HARA <sinara@...> 2006/06/20

原です。

[#28830] Re: rational 1.08 — Tadayoshi Funaba <tadf@...> 2006/06/24

ふなばです。

[ruby-dev:28737] Re: Module#toplevel_eval

From: Hidetoshi NAGAI <nagai@...>
Date: 2006-06-15 12:14:49 UTC
List: ruby-dev #28737
永井@知能.九工大です.

From: Yukihiro Matsumoto <matz@ruby-lang.org>
Subject: [ruby-dev:28736] Re: Module#toplevel_eval (Re: binding の仕様変更? or バグ?)
Date: Thu, 15 Jun 2006 16:02:58 +0900
Message-ID: <1150343532.253370.20196.nullmailer@x31.priv.netlab.jp>
> [ruby-dev:28718]についてなら、見てます。ただ、まだどこが悪さ
> しているのか分かってません。ちょっと待ってくださいね。

ありがとうございます.よろしくお願い致します.

ちなみに切羽詰まって作った Module#toplevel_eval ですが,
その割には結構使えそうで,「ちょっといいかも」と思っています.

例えばですが,セキュリティ上の理由で,読み込んだコードからの
定数 ENV へのアクセスに制限をかけたい場合があったとします.
あらゆるケースを考えているわけではないですが,次のようにすると
Module#toplevel_eval の中から制約を回避するのはかなり難しそうです.

========================================================
class Wrapped_ENV
  @@allow_keys = ['USER', 'DISPLAY']

  def initialize
    @env = ENV
  end

  def inspect
    "Wrapped_ENV"
  end

  def class
    nil
  end

  def _check_key(key)
    @@allow_keys.index(key)
  end
  private :_check_key

  def [](key)
    key = key.to_s
    (_check_key(key))? @env[key]: nil
  end

  def []=(key,val)
    key = key.to_s
    val = val.to_s
    @env[key] = val if _check_key(key)
  end
end

module XX
  ENV = Wrapped_ENV.new

  ObjectSpace = nil
  Wrapped_ENV = nil

  def remove_const(*args)
    raise SecurityError, 'deny to remove constants'
  end
end

#########################

puts "*** access `ENV' in main"
p ["ENV['USER']",    ENV['USER']]
p ["ENV['DISPLAY']", ENV['DISPLAY']]
p ["ENV['HOME']",    ENV['HOME']]

XX.toplevel_eval{
  puts "\n*** access `ENV' in toplevel_eval"
  p ENV
  p ["ENV['USER']",    ENV['USER']]
  p ["ENV['DISPLAY']", ENV['DISPLAY']]
  p ["ENV['HOME']",    ENV['HOME']]
}

XX.toplevel_eval{
  puts "\n*** try to `remove_const :ENV'"
  begin
    remove_const :ENV
  rescue
    p $!
  end
}

XX.toplevel_eval{
  puts "\n*** try to override `remove_const' to call super()"
  def remove_const(*args)
    super(*args)
  end
  begin
    remove_const :ENV
  rescue
    p $!
  end

  def self.remove_const(*args)
    super(*args)
  end
  begin
    self.remove_const :ENV
  rescue
    p $!
  end
}

XX.toplevel_eval{
  puts "\n*** try to `undef_method :remove_const'"
  begin
    undef_method :remove_const
  rescue
    p $!
  end
  begin
    class << self
      undef_method :remove_const
    end
  rescue
    p $!
  end
  begin
    remove_const :ENV
  rescue
    p $!
  end
}

XX.toplevel_eval{
  puts "\n*** try to access ObjectSpace"
  p ObjectSpace
  p ::ObjectSpace

  puts "\n*** try to access Wrapped_ENV"
  p Wrapped_ENV
  p ::Wrapped_ENV
}

puts "\n"
XX.toplevel_eval{p ENV}
========================================================

実際に実行すると,こうなります.

========================================================
*** access `ENV' in main
["ENV['USER']", "nagai"]
["ENV['DISPLAY']", ":0.0"]
["ENV['HOME']", "/home/nagai"]

*** access `ENV' in toplevel_eval
Wrapped_ENV
["ENV['USER']", "nagai"]
["ENV['DISPLAY']", ":0.0"]
["ENV['HOME']", nil]

*** try to `remove_const :ENV'
#<SecurityError: deny to remove constants>

*** try to override `remove_const' to call super()
#<NoMethodError: super: no superclass method `remove_const'>
#<NoMethodError: super: no superclass method `remove_const'>

*** try to `undef_method :remove_const'
#<NameError: undefined method `remove_const' for class `Class'>
#<NoMethodError: undefined method `remove_const' for XX:Class>

*** try to access ObjectSpace
nil
nil

*** try to access Wrapped_ENV
nil
nil

Wrapped_ENV
========================================================

いかがなものでしょう?
少しはセキュリティ強化に役立たないでしょうか?(^_^;
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread