ports/lang/ruby16/files/patch-cgi.rb
Simon L. B. Nielsen 23003b8825 Fix DoS in the Ruby CGI module.
Obtained from:	ruby CVS
Reviewed by:	trhodes
OK'ed by:	maintainer silence
With hat:	secteam
2004-11-25 15:25:33 +00:00

31 lines
1022 B
Ruby

--- lib/cgi.rb 2002/08/25 20:15:54 1.23.2.17
+++ lib/cgi.rb 2004/10/24 23:37:19 1.23.2.18
@@ -182,7 +182,7 @@ class CGI
CR = "\015"
LF = "\012"
EOL = CR + LF
- REVISION = '$Id: cgi.rb,v 1.23.2.17 2002/08/25 20:15:54 wakou Exp $'
+ REVISION = '$Id: cgi.rb,v 1.23.2.18 2004/10/24 23:37:19 matz Exp $'
NEEDS_BINMODE = true if /WIN/ni.match(RUBY_PLATFORM)
PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'}
@@ -823,13 +823,15 @@ def read_multipart(boundary, content
end
c = if bufsize < content_length
- stdinput.read(bufsize) or ''
+ stdinput.read(bufsize)
else
- stdinput.read(content_length) or ''
+ stdinput.read(content_length)
end
+ if c.nil?
+ raise EOFError, "bad content body"
+ end
buf += c
content_length -= c.size
-
end
buf = buf.sub(/\A((?:.|\n)*?)(?:#{EOL})?#{boundary}(#{EOL}|--)/n) do