Backport #8467

Rewinding and iterating through gzipped IO leads to segmentation fault

Added by Vicente Mundim 11 months ago. Updated 11 months ago.

[ruby-core:55220]
Status:Closed
Priority:Normal
Assignee:Tomoyuki Chikanaga

Description

The following steps reproduce the bug in 2.0.0:

  • Create a file and gzip it in a terminal:

    echo "some content" > compressedfile && gzip compressedfile

Then start a IRB session with the following code:

require 'zlib'
filename = "compressedfile.gz"
io = Zlib::GzipReader.new(open(filename, 'rb'))
io.rewind
io.each {} # segmentation
fault in Ruby 2.0.0

This works in Ruby 1.9.3, 1.9.2, and 1.8.7.

zlib_bug.rb Magnifier - File with code to reproduce bug (152 Bytes) Vicente Mundim, 06/01/2013 12:15 AM

ruby_2013-05-31-121414_vm-imac.crash - Crash report (8.99 KB) Vicente Mundim, 06/01/2013 12:15 AM

Associated revisions

Revision 41073
Added by Tomoyuki Chikanaga 11 months ago

merge revision(s) 41014: [Backport #8467]

* ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
  (gzreader_gets): check EOF.   [Bug #8467]

* ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
  (gzreader_gets): check EOF.   [Bug #8467]

* lib/cgi/util.rb: All class methods moduleized.

History

#1 Updated by Nobuyoshi Nakada 11 months ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r41014.
Vicente, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


zlib.c: check EOF

  • ext/zlib/zlib.c (gzfileread, gzfilereadall, gzfilegetc), (gzreader_gets): check EOF. [Bug #8467]

#2 Updated by Nobuyoshi Nakada 11 months ago

  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.0.0: REQUIRED

#3 Updated by Tomoyuki Chikanaga 11 months ago

  • Tracker changed from Bug to Backport
  • Project changed from ruby-trunk to Backport200
  • Category deleted (lib)
  • Status changed from Closed to Assigned
  • Assignee set to Tomoyuki Chikanaga

#4 Updated by Tomoyuki Chikanaga 11 months ago

  • Status changed from Assigned to Closed

This issue was solved with changeset r41073.
Vicente, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


merge revision(s) 41014: [Backport #8467]

* ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
  (gzreader_gets): check EOF.   [Bug #8467]

* ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
  (gzreader_gets): check EOF.   [Bug #8467]

* lib/cgi/util.rb: All class methods moduleized.

Also available in: Atom PDF