Project

General

Profile

Actions

Bug #7828

closed

invalid glibcver in test_m17n_comb.rb:test_str_crypt fails 2.17 system

Added by jonforums (Jon Forums) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 2.0.0dev (2013-02-12 trunk 39207) [i686-linux]
Backport:
[ruby-core:52129]

Description

On my Arch 3.7.6 32bit system with a 2.17 libc, the following line in test_m17n_comb.rb:test_str_crypt causes the test to fail

glibcver = #{RbConfig::CONFIG["libdir"]}/libc.so.6[/\AGNU C Library.*version ([0-9.]+)/, 1].split('.').map(&:to_i)

because libc.so.6 doesn't exist in RbConfig::CONFIG["libdir"]. As such, invalid salt values aren't skipped and String#crypt fails due to an invalid "__" (underscore underscore) salt value.

Details of the failure are shown below (ignore the line numbers as I instrumented the test), but the following are the libc locations for my systems of interest:

Ubuntu Server 12.10 32bit:
/lib/i386-linux-gnu/libc.so.6 (v2.15)

Arch 3.7.6 32bit:
/usr/lib/libc.so.6 (v2.17)

Ubuntu Server 12.10 64bit:
/lib/x86_64-linux-gnu/libc.so.6 (v2.15)

Failure details

[jon@archee build]$ uname -a
Linux archee 3.7.6-1-ARCH #1 SMP PREEMPT Mon Feb 4 10:21:12 CET 2013 i686 GNU/Linux

[jon@archee build]$ /usr/lib/libc.so.6 | head -1
GNU C Library (GNU libc) stable release version 2.17, by Roland McGrath et al.

[jon@archee build]$ ruby -rrbconfig -v -e 'puts RbConfig::CONFIG["libdir"]'
ruby 2.0.0dev (2013-02-12 trunk 39207) [i686-linux]
/usr/local/lib

[jon@archee build]$ make test-all TESTS="ruby/test_m17n_comb.rb"
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -ansi -std=iso9899:199409 -fPIC
XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/i686-linux -I../include -I..
DLDFLAGS = -Wl,-soname,libruby.so.2.0 -fstack-protector
SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems "../test/runner.rb" --ruby="./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems" ruby/test_m17n_comb.rb
Run options: "--ruby=./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems"

Running tests:

[27/77] TestM17NComb#test_str_crypt
RbConfig::CONFIG['libdir'] = /usr/local/lib
glibcver = , strict_crypt =
salt_orig = ¡¡, salt_orig.length = 1
salt = ¡¡, salt.length = 2
= 0.01 s

  1. Error:
    test_str_crypt(TestM17NComb):
    Errno::EINVAL: Invalid argument - crypt
    /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:744:in crypt' /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:744:in block in test_str_crypt'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:83:in block in each' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:75:in block in each_index'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:46:in block in make_large_block' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:26:in block (2 levels) in make_basic_block'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:21:in times' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:21:in block in make_basic_block'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:20:in times' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:20:in make_basic_block'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:45:in make_large_block' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:71:in each_index'
    /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:82:in each' /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:60:in combination'
    /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:730:in `test_str_crypt'

Finished tests in 7.171895s, 10.7364 tests/s, 29005.8640 assertions/s.
77 tests, 208027 assertions, 0 failures, 1 errors, 0 skips

ruby -v: ruby 2.0.0dev (2013-02-12 trunk 39207) [i686-linux]

[jon@archee build]$ ripl

''.crypt('__')
Errno::EINVAL: Invalid argument - crypt
(ripl):2:in crypt' (ripl):2:in '

Actions

Also available in: Atom PDF