Package: libbarby-ruby1.8
Version: 0.3-1
Severity: normal
Tags: patch

Creating a new instance of Barby::Code128 with a legitimate string can
cause a stack trace.  One such string is the empty string:

      Barby::Code128.new("", 'B')

The stack trace is:

/usr/lib/ruby/1.8/barby/barcode/code_128.rb:239:in `characters': private method 
`split' called for nil:NilClass (NoMethodError)
        from /usr/lib/ruby/1.8/barby/barcode/code_128.rb:364:in `valid?'
        from /usr/lib/ruby/1.8/barby/barcode/code_128.rb:162:in `initialize'
        from ./foo.rb:15:in `new'
        from ./foo.rb:15

foo.rb (attached) reproduces the problem two different ways.

      Wayne Conrad

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.30-2-686-bigmem (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash

Versions of packages libbarby-ruby1.8 depends on:
ii  librqrcode-ruby1.8           0.3.2-2     Ruby library for encoding QRCode (
ii  rails                        2.2.3-1     MVC ruby based framework geared fo
ii  ruby1.8                      1.8.7.174-2 Interpreter of object-oriented scr

libbarby-ruby1.8 recommends no packages.

Versions of packages libbarby-ruby1.8 suggests:
ii  libcairo-ruby1.8              1.8.0-1    Cairo bindings for the Ruby langua
pn  libprawn-ruby1.8              <none>     (no description available)
ii  librmagick-ruby1.8            2.11.1-1   ImageMagick API for Ruby 1.8

-- no debconf information

Attachment: foo.rb
Description: application/ruby

diff -ur libbarby-ruby-0.3.orig/lib/barby/barcode/code_128.rb libbarby-ruby-0.3/lib/barby/barcode/code_128.rb
--- libbarby-ruby-0.3.orig/lib/barby/barcode/code_128.rb	2009-11-18 17:51:28.000000000 -0700
+++ libbarby-ruby-0.3/lib/barby/barcode/code_128.rb	2009-11-18 17:51:37.000000000 -0700
@@ -227,8 +227,8 @@
     #sets, in which case the extra will itself have an extra.
     def extra=(extra)
       raise ArgumentError, "Extra must begin with \\301, \\302 or \\303" unless extra =~ /^[#{CODEA+CODEB+CODEC}]/n
-      type = extra[/([#{CODEA+CODEB+CODEC}])/n, 1]
-      data = extra[/[#{CODEA+CODEB+CODEC}](.*)/n, 1]
+      type = extra[0..0]
+      data = extra[1..-1]
       @extra = class_for(type).new(data)
     end
 

Reply via email to