[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

can't modify literal regexp: why?

Jeremy Stephens

11/13/2007 8:56:00 PM

I was just curious as to why this is illegal.

Example:
$ irb
>> /blah/.clone
SecurityError: can't modify literal regexp
from (irb):1:in `initialize_copy'
from (irb):1:in `clone'
from (irb):1
>>

Regexp.new(/blah/).clone is perfectly OK. What's insecure about cloning
a literal regex?
--
Posted via http://www.ruby-....

4 Answers

7stud --

11/13/2007 9:02:00 PM

0

Jeremy Stephens wrote:
> I was just curious as to why this is illegal.
>
> Example:
> $ irb
>>> /blah/.clone
> SecurityError: can't modify literal regexp
> from (irb):1:in `initialize_copy'
> from (irb):1:in `clone'
> from (irb):1
>>>
>
> Regexp.new(/blah/).clone is perfectly OK. What's insecure about cloning
> a literal regex?


(/blah/).clone

--
Posted via http://www.ruby-....

Nobuyoshi Nakada

11/14/2007 4:33:00 AM

0

Hi,

At Wed, 14 Nov 2007 05:56:12 +0900,
Jeremy Stephens wrote in [ruby-talk:278872]:
> I was just curious as to why this is illegal.
>
> Example:
> $ irb
> >> /blah/.clone
> SecurityError: can't modify literal regexp
> from (irb):1:in `initialize_copy'
> from (irb):1:in `clone'
> from (irb):1
> >>
>
> Regexp.new(/blah/).clone is perfectly OK. What's insecure about cloning
> a literal regex?

It is to prohibit /blah/.initialize_copy(/foobar/). You may
know, /blah/.dup works.

--
Nobu Nakada

Jeremy Stephens

11/14/2007 2:48:00 PM

0

Nobuyoshi Nakada wrote:
> Hi,
>
> At Wed, 14 Nov 2007 05:56:12 +0900,
> Jeremy Stephens wrote in [ruby-talk:278872]:
>>
>> Regexp.new(/blah/).clone is perfectly OK. What's insecure about cloning
>> a literal regex?
>
> It is to prohibit /blah/.initialize_copy(/foobar/). You may
> know, /blah/.dup works.

Thanks for the info. Anyone know _why_ it's prohibited? Just curious.
--
Posted via http://www.ruby-....

Eric Hodel

11/14/2007 6:59:00 PM

0

On Nov 14, 2007, at 06:48 , Jeremy Stephens wrote:
> Nobuyoshi Nakada wrote:
>> Hi,
>>
>> At Wed, 14 Nov 2007 05:56:12 +0900,
>> Jeremy Stephens wrote in [ruby-talk:278872]:
>>>
>>> Regexp.new(/blah/).clone is perfectly OK. What's insecure about
>>> cloning
>>> a literal regex?
>>
>> It is to prohibit /blah/.initialize_copy(/foobar/). You may
>> know, /blah/.dup works.
>
> Thanks for the info. Anyone know _why_ it's prohibited? Just
> curious.

x = /x/.dup
x.send :initialize_copy, /y/
p x # => /y/

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars