[#8976] Insecure warnings on sticky-bit directories — "Laurent Sansonetti" <laurent.sansonetti@...>
Hi,
[#8978] Inheritance and Autorunner: Default_test causes a problem — <noreply@...>
Bugs item #5990, was opened at 2006-10-02 10:05
Hi,
[#8997] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...>
On Tue, 3 Oct 2006, matz wrote:
Hi,
On Wed, 4 Oct 2006, Yukihiro Matsumoto wrote:
Hi,
Hi --
Yukihiro Matsumoto wrote:
Hi,
Hi --
Hi,
Hi --
Hi,
Hi --
On Oct 9, 2006, at 10:19 AM, dblack@wobblini.net wrote:
On 2006.10.10 00:31, James Edward Gray II wrote:
On Oct 9, 2006, at 11:50 AM, Eero Saynatkari wrote:
Hi --
dblack@wobblini.net wrote:
Thomas Enebo wrote:
Hi --
Hi --
Hi,
Hi --
Hi,
On 10/10/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On Oct 10, 2006, at 8:43 AM, Yukihiro Matsumoto wrote:
From: <dblack@wobblini.net>
Hi --
> to_a was too general. All enumerable objects (and even
Brown, Warren wrote:
> -----Original Message-----
[#8999] making FileUtils.rm_rf robust: is anyone interested? — Jim Meyering <list+ruby@...>
Hello,
Hi,
"Nobuyoshi Nakada" <nobu@ruby-lang.org> wrote:
[#9014] C#'s ?? Operator — "Nikolai Weibull" <now@...>
Hi!
[#9021] argument passing bug — Mathieu Bouchard <matju@...>
[#9024] — Shashank Date <sdate@...>
Hi All,
[#9077] how to create a NODE_ARGSPUSH? — Ryan Davis <ryand-ruby@...>
Is it possible for plain ruby code to create a NODE_ARGSPUSH? It
[#9104] Loop over array.delete breaks at first hit — <noreply@...>
Bugs item #6090, was opened at 2006-10-10 22:33
Hi,
[#9119] What about 'splay'? — dblack@...
Hi --
On 2006.10.12 02:32, dblack@wobblini.net wrote:
On Wednesday 11 October 2006 13:55, Eero Saynatkari wrote:
Hi --
dblack@wobblini.net wrote:
Hi --
On 2006.10.12 03:36, Sean Russell wrote:
On 10/11/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
[#9152] regular expressions tainting? — hadmut@... (Hadmut Danisch)
Hi,
Hi,
On Thu, Oct 12, 2006 at 01:01:36PM +0900, Nobuyoshi Nakada wrote:
It's worse:
Hi,
On Oct 15, 2006, at 1:20 AM, Hadmut Danisch wrote:
On Sun, Oct 15, 2006 at 05:33:16PM +0900, Eric Hodel wrote:
[#9158] Module#class_variable_defined? — Mauricio Fernandez <mfp@...>
[#9188] Symbol < String in Ruby > 1.8 — dblack@...
Hi --
Hi
Yukihiro Matsumoto wrote:
Charles Oliver Nutter wrote:
Charles Oliver Nutter wrote:
Jim Weirich wrote:
On Thu, Oct 19, 2006 at 05:06:02AM +0900, Charles Oliver Nutter wrote:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 01:40:42PM +0900:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 02:49:30PM +0900:
Hi,
Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 11:22:18PM +0900:
On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi,
On 10/16/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
On Oct 16, 2006, at 3:06 PM, Rick DeNatale wrote:
On Tue, Oct 17, 2006 at 05:14:09AM +0900, James Edward Gray II wrote:
On 10/16/06, Sam Roberts <sroberts@uniserve.com> wrote:
Hi,
Hi --
On Oct 17, 2006, at 7:29 PM, dblack@wobblini.net wrote:
Hi --
On Oct 18, 2006, at 4:18 AM, dblack@wobblini.net wrote:
On 10/18/06, Eric Hodel <drbrain@segment7.net> wrote:
On 10/18/06, Nikolai Weibull <now@bitwi.se> wrote:
On 10/18/06, mathew <meta@pobox.com> wrote:
On Thu, Oct 19, 2006 at 04:24:24AM +0900, Nikolai Weibull wrote:
On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:
Hi --
On 10/18/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi -
Hi,
Hi --
Rick DeNatale wrote:
Hi --
Hi,
Hi --
On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
dblack@wobblini.net wrote:
Hi --
Hi,
Hi --
Hi,
Hi --
On 10/20/06, dblack@wobblini.net <dblack@wobblini.net> wrote:
Hi --
Hi,
On Sat, Oct 21, 2006 at 01:11:36AM +0900, dblack@wobblini.net wrote:
Hi,
On Oct 18, 2006, at 11:37 AM, Nikolai Weibull wrote:
[#9197] Ruby Threads — "Abhisek Datta" <abhisek@...>
Hello,
[#9282] Re: String not enumerable, what about IO? — "Michael Selig" <michael.selig@...>
I am fairly new to ruby, and I have just started listening to this mailing
[#9341] array.c - defining aliases as aliases — "Daniel Berger" <djberg96@...>
Hi all,
On Oct 27, 2006, at 11:12 AM, Daniel Berger wrote:
[#9351] Module#method_aliased and Module#singleton_method_aliased — "Daniel Berger" <djberg96@...>
Hi all,
Re: regular expressions tainting?
On Sun, Oct 15, 2006 at 05:33:16PM +0900, Eric Hodel wrote:
>
> Please attach the testcase.
OK, i have stripped down the testcase further. The program does not
make much sense anymore, but still shows the bug:
The program calls
IPAddrRange.new("192.168.0.0-192.168.255.255")
twice, once directly and once hidden within the
Whois.get("192.168.155.1")
call. Althoug both calls to IPAddrRange.new do the very same, it works
for the first time and then it fails for the second time, because the
regular expression engine seems to have gone into a state where it
keeps tainting any results.
When I run the attached program the output looks like this:
% ruby WhoisBug.rb
IPAddrRangeInit 192.168.0.0-192.168.255.255 Tainted false SAFE=1
Tainted arg false 192.168.0.0-192.168.255.255 SAFE=1
Tainted v false |192.168.0.0|
Tainted b false |192.168.255.255|
192.168.0.0-192.168.255.255
IPAddrRangeInit 192.168.0.0-192.168.255.255 Tainted false SAFE=1
Tainted arg false 192.168.0.0-192.168.255.255 SAFE=1
Tainted v false |192.168.0.0|
Tainted b false |192.168.255.255|
Exception: invalid address (ArgumentError)
/usr/lib/ruby/1.8/ipaddr.rb:422:in `initialize'
WhoisBug.rb:27:in `new'
WhoisBug.rb:27:in `initialize'
WhoisBug.rb:159:in `new'
WhoisBug.rb:159:in `parse'
WhoisBug.rb:137:in `each'
WhoisBug.rb:137:in `parse'
WhoisBug.rb:94:in `get_whois_net'
WhoisBug.rb:76:in `get'
WhoisBug.rb:186
So calling the same thing twice works only in the first time.
regards
Hadmut
Attachments (1)
# Copyright 2003-2006 Hadmut Danisch, hadmut@danisch.de
require 'thread'
require 'monitor'
require 'ipaddr'
##########################################################################
class IPAddrRange
attr_reader :von, :bis, :mask_len
def initialize(arg)
@von,@bis,@mask=nil,nil,nil
$stderr.puts "IPAddrRangeInit #{arg} Tainted #{arg.tainted?} SAFE=#{$SAFE}"
case arg
when /^([\da-f\.:]+)\s*-\s*([\da-f\.:]+)$/i
v,b=$1.untaint,$2.untaint
$stderr.puts "Tainted arg #{arg.tainted?} #{arg} SAFE=#{$SAFE}"
$stderr.puts "Tainted v #{v.tainted?} |#{v}|"
$stderr.puts "Tainted b #{b.tainted?} |#{b}|"
@von=IPAddr.new(v)
@bis=IPAddr.new(b)
else
raise "Address Range Syntax"
end
$stderr.puts
end
def to_s
@von.to_s + "-" + @bis.to_s
end
end
###########################################################################
class WhoisData
attr_reader :country,:org,:range,:id,:typ
def initialize(country,org,range,id=nil,typ=nil)
@country,@org,@range=country,org,range
@id=id
@typ=1
end
def to_s
"#{@country}: #{@org} #{@range}"
end
end
###########################################################################
module Whois
def Whois.get(ipaddr,dbmutex=nil)
ipaddr = IPAddr.new(ipaddr)
addrkey = ipaddr.native
result = Whois.get_whois_net(addrkey)
return result
end
###########################################################################
def Whois.get_whois_net(net,host=nil)
#whois = `jwhois -d #{net}`
# jwhois call replaced with static data for debugging purposes
whois=<<ENDE
OrgName: Internet Assigned Numbers Authority
Country: US
NetRange: 192.168.0.0 - 192.168.255.255
ENDE
whois.taint
Whois.parse(whois)
end
###########################################################################
def Whois.parse(whois)
case whois
when String
whois=whois.split("\n")
when Array
# ok
else
raise "Argument #{whois.class}"
end
wh = {}
for zeile in whois do
zeile.delete!("\r\n")
#puts "Z #{zeile}"
case zeile
when /^(\w[\w ]+\w)\s*:\s*([-_\s\w\.\,\(\)\/]+)$/
wh[$1]=$2 unless wh.has_key?($1)
end
end
#wh.keys.sort.each{|k| printf "%-20.20s %s\n",k,wh[k]}
# Here the bug begins:
# Problem does not occur if we pass back the same results directly
# return "US","IANA",IPAddrRange.new("192.168.0.0 - 192.168.255.255")
for i in [
["NetRange", "OrgName", "Country"],
["NetRange", "NetName", "Country"],
] do
netkey,orgkey,countrykey=*i
if wh.has_key?(netkey) &&
wh.has_key?(orgkey) &&
wh.has_key?(countrykey)
addr=wh[netkey].gsub(" ","")
case addr
when /^[-\.\d]+$/
addr=addr.untaint
else
raise "Address syntax"
end
#$stderr.puts "Angekommen #{wh[orgkey]} |#{wh[netkey]}|#{addr}|#{addr.tainted?}"
return WhoisData.new(wh[countrykey],
wh[orgkey],
IPAddrRange.new(addr))
end #if
end #for
return nil
end
end
###########################################################################
if __FILE__ == $0
begin
$SAFE=1
puts IPAddrRange.new("192.168.0.0-192.168.255.255")
puts
puts Whois.get("192.168.155.1")
rescue SystemExit
raise
rescue Exception => exc
$stderr.puts "Exception: #{exc} (#{exc.class.to_s})"
$stderr.puts exc.backtrace
exit 99
end
end