Project

General

Profile

Actions

Bug #10223

closed

Stack level too deep in CSV when parsing long line

Added by apohllo (Aleksander Pohl) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux], ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
[ruby-core:64931]

Description

The following code:

#!/usr/bin/env ruby                                                                                                                                                        
# encoding: utf-8

require 'bundler/setup'
require 'csv'

CSV.open("csv_error.csv") do |input|
  input.each do |category,*mappings|
    # do nothing
  end
end

with the data file attached causes the follwing error:

/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/csv.rb:1768: stack level too deep (SystemStackError)

Interestingly almost the same code:

#!/usr/bin/env ruby                                                                                                                                                        
# encoding: utf-8

require 'bundler/setup'
require 'csv'

CSV.open("csv_error.csv") do |input|
  input.each do |tuple|
    # do nothing
  end
end

works fine. The error appears both in Ruby 1.9.2 (ancient) and Ruby 2.1.2. So I suppose it is an error inside CSV lib.

This might be important for any developer parsing CSV files comming from the outside world, since it may cause DOS error.


Files

csv_error.csv (2.1 MB) csv_error.csv apohllo (Aleksander Pohl), 09/10/2014 02:17 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0