Package: libruby1.8
Version: 1.8.5-4etch3
Severity: normal
After libruby1.8 1.8.5-4etch3, parsing of some XML documents failed.
For example,
% ruby -r rexml/document -r open-uri -e
'REXML::Document.new(URI.parse("http://github.com/bioruby/bioruby/tree/master%2Ftest%2Fdata%2Fblast%2Fb0002.faa.m7?raw=true";).read).root.each_element_with_text
{ |e| p e.name }'
"BlastOutput_program"
"BlastOutput_version"
/usr/lib/ruby/1.8/rexml/entity.rb:76:in `unnormalized': undefined method
`record_entity_expansion' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/1.8/rexml/doctype.rb:143:in `entity'
from /usr/lib/ruby/1.8/rexml/text.rb:323:in `unnormalize'
from /usr/lib/ruby/1.8/rexml/text.rb:321:in `each'
from /usr/lib/ruby/1.8/rexml/text.rb:321:in `unnormalize'
from /usr/lib/ruby/1.8/rexml/text.rb:173:in `value'
from /usr/lib/ruby/1.8/rexml/element.rb:457:in `text'
from /usr/lib/ruby/1.8/rexml/element.rb:438:in `has_text?'
from /usr/lib/ruby/1.8/rexml/element.rb:389:in `each_element_with_text'
from /usr/lib/ruby/1.8/rexml/element.rb:734:in `call'
from /usr/lib/ruby/1.8/rexml/element.rb:734:in `each_with_something'
from /usr/lib/ruby/1.8/rexml/element.rb:939:in `each'
from /usr/lib/ruby/1.8/rexml/xpath.rb:53:in `each'
from /usr/lib/ruby/1.8/rexml/element.rb:939:in `each'
from /usr/lib/ruby/1.8/rexml/element.rb:733:in `each_with_something'
from /usr/lib/ruby/1.8/rexml/element.rb:393:in `each_element_with_text'
from -e:1
With 1.8.5-4etch2, no error occurred.
% ruby -r rexml/document -r open-uri -e
'REXML::Document.new(URI.parse("http://github.com/bioruby/bioruby/tree/master%2Ftest%2Fdata%2Fblast%2Fb0002.faa.m7?raw=true";).read).root.each_element_with_text
{ |e| p e.name }'
"BlastOutput_program"
"BlastOutput_version"
"BlastOutput_reference"
"BlastOutput_db"
"BlastOutput_query-ID"
"BlastOutput_query-def"
"BlastOutput_query-len"
"BlastOutput_param"
"BlastOutput_iterations"
The same problem is reported in a blog.
http://mashing-it-up.blogspot.com/2008/09/dos-vulnerability-in-rexml-patch-fix.html
Following patch can fix this bug.
--- /usr/lib/ruby/1.8/rexml/entity.rb.ORIG 2008-10-11 04:35:02.0
+0900
+++ /usr/lib/ruby/1.8/rexml/entity.rb 2008-10-17 21:18:59.731379482 +0900
@@ -73,7 +73,7 @@
# all entities -- both %ent; and &ent; entities. This differs
from
# +value()+ in that +value+ only replaces %ent; entities.
def unnormalized
- document.record_entity_expansion
+ document.record_entity_expansion unless document.nil?
v = value()
return nil if v.nil?
@unnormalized = Text::unnormalize(v, parent)
The same patch for ruby1.8 source package is:
--- debian/patches/168_rexml_dos.patch.ORIG 2008-10-17 20:56:29.0
+0900
+++ debian/patches/168_rexml_dos.patch 2008-10-17 21:16:53.330108500 +0900
@@ -44,7 +44,7 @@
# all entities -- both %ent; and &ent; entities. This differs
from
# +value()+ in that +value+ only replaces %ent; entities.
def unnormalized
-+ document.record_entity_expansion
++ document.record_entity_expansion unless document.nil?
v = value()
return nil if v.nil?
@unnormalized = Text::unnormalize(v, parent)
Thank you.
-- System Information:
Debian Release: 4.0
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.25
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Versions of packages libruby1.8 depends on:
ii libc6 2.3.6.ds1-13etch7 GNU C Library: Shared libraries
ii libncurses55.5-5 Shared libraries for terminal hand
ii zlib1g 1:1.2.3-13compression library - runtime
libruby1.8 recommends no packages.
-- debconf-show failed
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]