debian/0000775000000000000000000000000013453434446007202 5ustar debian/ruby1.9.1.menu0000664000000000000000000000017012247132667011436 0ustar ?package(ruby1.9.1):needs="text" section="Applications/Programming" title="Ruby (irb1.9.1)" command="/usr/bin/irb1.9.1" debian/ri1.9.1.rd0000664000000000000000000000311512247132667010532 0ustar =begin = NAME ri1.9 - Ruby Information at your fingertips = SYNOPSIS ri1.9 [options] [names...] = DESCRIPTION ((*ri1.9*)) displaies information on Ruby classes, modules, and methods. You can give the names of classes or methods to see their documentation. Partial names may be given: if the names match more than one entity, a list will be shown, otherwise details on that entity will be displayed. Nested classes and modules can be specified using the normal Name::Name notation, and instance methods can be distinguished from class methods using "." (or "#") instead of "::". For example: ri1.9 File ri1.9 File.new ri1.9 F.n ri1.9 zip Note that shell quoting may be required for method names containing punctuation: ri1.9 'Array.[]' ri1.9 compact\! = OPTIONS : --classes, -c Display the names of classes and modules we know about. : --doc-dir, -d ((|dirname|)) A directory to search for documentation. If not specified, we search the standard rdoc/ri directories. : --format, -f ((|name|)) Format to use when displaying output: ansi, bs, html, plain, simple. Use 'bs' (backspace) with most pager programs. To use ANSI, either also use the -T option, or tell your pager to allow control characters. (for example using the -R option to less.) : --list-names, -l List all the names known to RDoc, one per line. : --no-pager, -T Send output directly to stdout. : --width, -w ((|width|)) Set the width of the output. : --version, -v Display the version of ri1.9. : --help, -h Display help. Options may also be passed in the 'RI' environment variable =end debian/extfixup_examples.sh0000664000000000000000000000026412247132667013312 0ustar #!/bin/sh pkg_name="$1" ext_dir="$2" for f in `find "$ext_dir" -name '*.rb' -type f -not -name 'extconf.rb' -not -path ' */lib/*'` do dh_installexamples -p"$pkg_name" $f done debian/extfixup_rubylibs.sh0000664000000000000000000000035012247132666013322 0ustar #!/bin/sh ruby_libdir=$1 pkg_name=$2 ext_dir=$3 if [ -d "$ext_dir/lib" ] then for f in `find "$ext_dir/lib" -type f -name '*.rb'` do dh_movefiles -p"$pkg_name" "$ruby_libdir"/`expr "$f" : "$ext_dir/lib/\(.*\)"` done fi debian/rules0000775000000000000000000002737312262041421010256 0ustar #!/usr/bin/make -f ruby_ver = 1.9.1 ruby_ver_major = 1.9 ruby_ver_dir = $(ruby_ver) ruby_libpkgsfx = $(ruby_ver) tcltk_ver = 8.5 arch_name = $(subst linux-gnu,linux-,$(patsubst %linux-gnu,%linux,$(DEB_HOST_GNU_TYPE))) ifeq (i686-linux-lp,$(arch_name)) arch_name = i686-linux endif ruby_name = ruby$(ruby_ver) ruby_libbase = usr/lib/ruby ruby_libdir = $(ruby_libbase)/$(ruby_ver_dir) ruby_archdir = $(ruby_libbase)/$(ruby_ver_dir)/$(arch_name) bin_dir = usr/bin man_dir = usr/share/man/man1 el_etc = etc/emacs/site-start.d examples_dir = $(CURDIR)/debian/ruby$(ruby_ver)-examples/usr/share/doc/ruby$(ruby_ver)-examples/examples insns_cache_dir = debian/generated-incs #deb_ver = $(shell dpkg-parsechangelog | awk '/^Version:/{print $2}') include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/makefile.mk include /usr/share/cdbs/1/class/autotools.mk DEB_AUTO_UPDATE_AUTOCONF = YES CFLAGS += -fno-strict-aliasing CXXFLAGS += -fno-strict-aliasing LDFLAGS += -L$(CURDIR)/debian/lib # Renesas SH(sh4) needs -mieee option. #591785 ifeq (sh4,$(shell dpkg-architecture -qDEB_HOST_ARCH)) CFLAGS += -mieee endif ifeq ($(DEB_HOST_GNU_CPU),i386) DEB_CONFIGURE_USER_FLAGS += --enable-frame-address endif ifneq (,$(filter $(DEB_HOST_GNU_CPU),i486 i586 i686)) DEB_CONFIGURE_USER_FLAGS += --enable-frame-address endif DEB_CONFIGURE_USER_FLAGS += --enable-pthread DEB_CONFIGURE_USER_FLAGS += --enable-shared DEB_CONFIGURE_USER_FLAGS += --disable-rpath DEB_CONFIGURE_USER_FLAGS += --disable-install-doc DEB_CONFIGURE_USER_FLAGS += --with-vendordir='/$(ruby_libbase)/vendor_ruby' DEB_CONFIGURE_USER_FLAGS += --with-sitedir='/usr/local/lib/site_ruby' DEB_CONFIGURE_USER_FLAGS += --program-suffix=1.9.1 DEB_CONFIGURE_USER_FLAGS += --with-soname=ruby-1.9.1 # the following are ignored by ./configure, but used by some extconf.rb scripts DEB_CONFIGURE_USER_FLAGS += --enable-ipv6 DEB_CONFIGURE_USER_FLAGS += --with-dbm-type=gdbm_compat DEB_CONFIGURE_USER_FLAGS += --with-tklib=tk$(tcltk_ver) DEB_CONFIGURE_USER_FLAGS += --with-tcllib=tcl$(tcltk_ver) DEB_CONFIGURE_USER_FLAGS += --with-tcl-include=/usr/include/tcl$(tcltk_ver) DEB_CONFIGURE_USER_FLAGS += --with-tk-include=/usr/include/tcl$(tcltk_ver) DEB_CONFIGURE_USER_FLAGS += --with-tcl-lib=/usr/lib/$(DEB_HOST_MULTIARCH) DEB_CONFIGURE_USER_FLAGS += --with-tk-lib=/usr/lib/$(DEB_HOST_MULTIARCH) DEB_CONFIGURE_USER_FLAGS += --with-bundled-sha1 DEB_CONFIGURE_USER_FLAGS += --with-bundled-md5 DEB_CONFIGURE_USER_FLAGS += --with-bundled-rmd160 ifeq (,$(filter nordoc,$(DEB_BUILD_OPTIONS))) DEB_MAKE_BUILD_TARGET = all else DEB_MAKE_BUILD_TARGET = main endif DEB_INSTALL_DOCS_libtcltk-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/tk/README* DEB_INSTALL_DOCS_libtcltk-ruby$(ruby_ver) += $(DEB_SRCDIR)/ext/tk/MANUAL* DEB_INSTALL_DIRS_ruby$(ruby_ver) += $(bin_dir) DEB_INSTALL_DIRS_ruby$(ruby_ver) += $(man_dir) DEB_INSTALL_DOCS_ruby$(ruby_ver) += DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/LEGAL DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/README DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/README.ja DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/ToDo DEB_INSTALL_DOCS_ruby$(ruby_ver) += $(DEB_SRCDIR)/doc/NEWS-1.8.7 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/testrb$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/erb$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/rake$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/rdoc$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/irb$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/gem$(ruby_ver).1 DEB_INSTALL_MANPAGES_ruby$(ruby_ver) += debian/manpages/ri$(ruby_ver).1 DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/lib/README DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/doc/NEWS-1.8.7 DEB_INSTALL_DOCS_libruby$(ruby_libpkgsfx) += $(DEB_SRCDIR)/doc/*.rd* DEB_INSTALL_DOCS_ruby$(ruby_ver)-dev += $(DEB_SRCDIR)/README.EXT* DEB_COMPRESS_EXCLUDE = .rb .pl .py .scm .awk .dat DEB_SHLIBDEPS_INCLUDE = $(CURDIR)/debian/libruby$(ruby_libpkgsfx)/usr/lib DEB_DH_MAKESHLIBS_ARGS_libruby$(ruby_libpkgsfx) = -V pre-build:: (find $(insns_cache_dir) -type f -print; \ echo configure; \ echo parse.c; \ ) | \ while read f; \ do \ bf=`basename $$f`; \ if [ ! -e $$bf.upstream-orig ] && [ -e $$bf ]; then \ cp -p $$bf $$bf.upstream-orig; \ fi; \ if [ "$$f" != "$$bf" ]; then \ cp -p $$f $$bf; \ fi; \ done echo -n "uname -a: " uname -a echo "/proc/cpuinfo: ----------" -cat /proc/cpuinfo echo "-------------------------" mkdir -p debian/lib ln -sf /usr/lib/$(DEB_HOST_MULTIARCH)/libtcl$(tcltk_ver).so debian/lib/libtcl.so ln -sf /usr/lib/$(DEB_HOST_MULTIARCH)/libtk$(tcltk_ver).so debian/lib/libtk.so common-post-build-arch:: ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # Disable test suites on some broken architectures. # See http://lists.debian.org/debian-release/2011/10/msg00279.html ifeq (,$(filter $(DEB_BUILD_ARCH),ia64 kfreebsd-i386 kfreebsd-amd64 sparc)) debian/run-test-suites.bash endif endif binary-install/libtcltk-ruby$(ruby_ver):: dh_movefiles -p$(cdbs_curpkg) \ $(ruby_archdir)/tcltklib.so \ $(ruby_archdir)/tkutil.so chrpath --delete $(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_archdir)/tcltklib.so sh $(CURDIR)/debian/extfixup_rubylibs.sh $(ruby_libdir) $(cdbs_curpkg) \ $(DEB_SRCDIR)/ext/tk install -d \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples (cd $(DEB_SRCDIR)/ext/tk/sample && \ tar cf - .) | \ (cd $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples && tar xf -) mv $(CURDIR)/debian/tmp/$(ruby_libdir)/tkextlib/SUPPORT_STATUS \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/ install \ $(DEB_SRCDIR)/ext/tk/lib/README \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.lib install \ $(DEB_SRCDIR)/ext/tk/lib/tkextlib/tcllib/README \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.tcllib install \ $(DEB_SRCDIR)/ext/tk/lib/tkextlib/tkimg/README \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/README.tkimg binary-install/libruby$(ruby_libpkgsfx):: $(patsubst %,binary-install/%,$(filter-out libruby$(ruby_libpkgsfx),$(DEB_PACKAGES))) install -d $(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_archdir) for s in $(CURDIR)/debian/$(cdbs_curpkg).*.in; do \ sed -e 's/@@arch@@/$(arch_name)/g' \ -e 's/@@verdir@@/$(ruby_ver_dir)/g' \ < $$s > `expr $$s : '\(.*\)\.in$$'`; \ done (cd $(CURDIR)/debian/tmp/usr/lib && \ for f in libruby-$(ruby_ver).so.$(ruby_ver) libruby-$(ruby_ver).so.$(ruby_ver_major); do \ echo usr/lib/$$f; \ done) | xargs dh_movefiles -p$(cdbs_curpkg) # Do not install the SSL certs bundled in the upstream source dh_movefiles -p$(cdbs_curpkg) -Xssl_certs $(ruby_libdir) cd $(DEB_SRCDIR)/ext && \ for dir in \ bigdecimal continuation curses digest dl etc \ fcntl iconv io json nkf openssl psych pty racc readline \ ripper sdbm socket stringio strscan syck syslog zlib \ ; \ do \ install -d "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir"; \ find $$dir \ -name '*README*' -or -name '*.html*' -or \ -name '*.txt*' -or -name '*.rd*' | \ while read fname; \ do \ cp "$$fname" \ "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir"; \ done; \ rmdir "$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/$$dir" 2>/dev/null || :; \ done find $(CURDIR)/debian/etc -type f -name "*.in" | \ while read fname; \ do \ sed -e 's/@@VERSION@@/1\.9\.1/g' -e 's/@@DOTLESS_VERSION@@/191/g' \ < $$fname > `expr $$fname : '\(.*\)\.in$$'`1.9.1; \ done; \ : \ done dh_install -p$(cdbs_curpkg) \ debian/etc/bash_completion.d/gem1.9.1 etc/bash_completion.d/ binary-install/ruby$(ruby_ver)-dev:: dh_movefiles -p$(cdbs_curpkg) \ usr/lib/libruby-$(ruby_ver).so \ usr/lib/libruby-$(ruby_ver)-static.a \ $(ruby_libdir)/mkmf.rb \ usr/lib/pkgconfig/ruby-1.9.pc (cd $(CURDIR)/debian/tmp && \ find usr/include/ruby-$(ruby_ver) -name '*.h' -type f) | \ xargs dh_movefiles -p$(cdbs_curpkg) binary-install/ruby$(ruby_ver):: dh_movefiles -p$(cdbs_curpkg) \ usr/bin/ruby1.9.1 \ usr/bin/erb1.9.1 \ usr/bin/testrb1.9.1 \ usr/bin/rake1.9.1 \ usr/bin/rdoc1.9.1 \ usr/bin/irb1.9.1 \ usr/bin/ri1.9.1 \ usr/bin/gem1.9.1 \ usr/share/man/man1/ruby1.9.1.1 binary-post-install/ri$(ruby_ver):: ifeq (,$(filter nordoc,$(DEB_BUILD_OPTIONS))) +$(DEB_MAKE_INVOKE) install-doc DESTDIR=$(CURDIR)/debian/$(cdbs_curpkg) \ RDOCFLAGS="--exclude debian --exclude test" endif binary-post-install/ruby$(ruby_ver)-examples:: install -d $(examples_dir)/bigdecimal cp -a $(DEB_SRCDIR)/ext/bigdecimal/sample/* $(examples_dir)/bigdecimal install -d $(examples_dir)/curses cd $(DEB_SRCDIR)/ext/curses && \ cp hello.rb mouse.rb rain.rb view.rb view2.rb \ $(examples_dir)/curses # install -d $(examples_dir)/digest # install -d $(examples_dir)/dl # install -d $(examples_dir)/enumerator # install -d $(examples_dir)/etc # install -d $(examples_dir)/fcntl # install -d $(examples_dir)/iconv # install -d $(examples_dir)/io # install -d $(examples_dir)/nkf install -d $(examples_dir)/pty # install -d $(examples_dir)/racc install -d $(examples_dir)/ripper cd $(DEB_SRCDIR)/ext/ripper && \ cp tools/* $(examples_dir)/ripper # install -d $(examples_dir)/sdbm # install -d $(examples_dir)/socket # install -d $(examples_dir)/stringio # install -d $(examples_dir)/strscan # install -d $(examples_dir)/syck # install -d $(examples_dir)/syslog # install -d $(examples_dir)/zlib (cd $(DEB_SRCDIR)/sample && tar cf - .) | \ (cd $(examples_dir) && tar xf -) find $(examples_dir) -type f -name '*.rb' -perm /111 -exec chmod a-x {} \+ $(patsubst %,binary-post-install/%,$(DEB_PACKAGES)):: bash $(CURDIR)/debian/fixshebang.sh ruby$(ruby_ver) \ '$(CURDIR)/debian/$(cdbs_curpkg)/$(bin_dir)' bash $(CURDIR)/debian/fixshebang.sh ruby$(ruby_ver) \ '$(CURDIR)/debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/examples' sh $(CURDIR)/debian/rmshebang.sh \ '$(CURDIR)/debian/$(cdbs_curpkg)/$(ruby_libdir)' clean:: rm -rf \ .installed.list \ .ext \ exts.mk \ prelude.c \ debian/libruby$(ruby_libpkgsfx).postinst \ debian/libruby$(ruby_libpkgsfx).prerm \ debian/libruby$(ruby_libpkgsfx).postrm \ debian/etc/bash_completion.d/gem1.9.1 (find $(insns_cache_dir) -type f -print; \ echo configure; \ echo parse.c; \ ) | \ while read f; \ do \ bf=`basename $$f`; \ if [ -e $$bf.upstream-orig ]; then \ mv -f $$bf.upstream-orig $$bf; \ fi; \ done echo -n "uname -a: " if [ -f $(DEB_SRCDIR)/config.guess.cdbs-orig ]; \ then \ mv $(DEB_SRCDIR)/config.guess.cdbs-orig \ $(DEB_SRCDIR)/config.guess; \ fi if [ -f $(DEB_SRCDIR)/config.sub.cdbs-orig ]; \ then \ mv $(DEB_SRCDIR)/config.sub.cdbs-orig \ $(DEB_SRCDIR)/config.sub; \ fi rm -rf debian/lib PACKAGE = ruby1.9.1 SRC_VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(\([0-9]\+\):\)\?\(.*\)-.*/\3/p') SVN_REVISION := $(shell echo $(SRC_VERSION) | awk -F"+" '{ print $$2 }' | sed 's/svn//' ) TARBALL = $(PACKAGE)_$(SRC_VERSION).orig.tar.gz SVN_PATH = http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_3 #SVN_PATH = http://svn.ruby-lang.org/repos/ruby/trunk .PHONY: get-orig-source check-orig-source get-orig-source: rm -rf get-orig-source $(TARBALL) mkdir get-orig-source svn export -r $(SVN_REVISION) $(SVN_PATH) \ get-orig-source/$(PACKAGE)-$(SRC_VERSION).orig GZIP=--best tar czf $(TARBALL) -C get-orig-source $(PACKAGE)-$(SRC_VERSION).orig rm -rf get-orig-source echo " "$(TARBALL)" created; move it to the right destination to build the package" check-orig-source: svn log $(SVN_PATH) | head -20 debian/source/0000775000000000000000000000000012247132722010472 5ustar debian/source/format0000664000000000000000000000001412247132667011710 0ustar 3.0 (quilt) debian/watch0000664000000000000000000000016712247132667010237 0ustar version=3 opts="pasv,uversionmangle=s/-p/\./" \ ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-(1\.9\.3*)-p(\d*)\.tar\.gz debian/fixshebang.sh0000664000000000000000000000116412247132666011655 0ustar #!/bin/bash ruby="$1" target_dir="$2" for f in `find "$target_dir" -type f 2>/dev/null` do textflag=0 filetype="`file -b $f`" for ft in $filetype do if [ "${#ft}" -lt 4 ] then continue fi if [ "${ft:0:4}" == "text" ] then textflag=1 break fi done if [ "$textflag" -eq 0 ] then continue fi cp -pf $f $f.tmp sed -e '1,1s,^#![ ]*\([^ ]*\)/\(ruby\|env ruby\)$,#!/usr/bin/'$ruby',' \ -e '1,1s,^#![ ]*\([^ ]*\)/\(wish\|perl\)$,#!/usr/bin/\2,' < $f > $f.tmp if ! cmp $f $f.tmp >/dev/null then mv -f $f.tmp $f else rm -f $f.tmp fi done debian/ruby1.9.1.preinst0000664000000000000000000000027512277552563012170 0ustar #!/bin/sh set -e if [ "$1" = "upgrade" ]; then update-alternatives --remove gem /usr/bin/gem1.9.1 || true update-alternatives --remove ruby /usr/bin/ruby1.9.1 || true fi #DEBHELPER# debian/control0000664000000000000000000001520312277552563010612 0ustar Source: ruby1.9.1 Section: ruby Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Antonio Terceiro Uploaders: akira yamada , Daigo Moriwaki , Lucas Nussbaum Build-Depends: debhelper (>= 9.0), cdbs (>= 0.4.106), quilt, patch, autoconf, m4, bison, libgdbm-dev, libncursesw5-dev, libncurses5-dev, libreadline6-dev, tcl8.5-dev, tk8.5-dev, zlib1g-dev, libssl-dev, procps, file, libffi-dev, ruby | ruby-interpreter, libyaml-dev, openssl, chrpath, coreutils (>= 7.5) Standards-Version: 3.9.4 Homepage: http://www.ruby-lang.org/ Vcs-Git: git://git.debian.org/collab-maint/ruby1.9.1.git Vcs-Browser: http://git.debian.org/?p=collab-maint/ruby1.9.1.git;a=summary Package: ruby1.9.1 Architecture: any Depends: ruby (>= 1:1.9.3.1), libruby1.9.1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Suggests: ruby1.9.1-examples, ri1.9.1, graphviz, ruby1.9.1-dev, ruby-switch Conflicts: rdoc1.9.1 (<< 1.9.1.378-2~), irb1.9.1 (<< 1.9.1.378-2~), rubygems1.9.1, ri1.9.1 (<< 1.9.2.180-3~), ruby (<= 4.5), ri (<= 4.5) Replaces: rdoc1.9.1, irb1.9.1, rubygems1.9.1 Provides: rdoc1.9.1, irb1.9.1, rubygems1.9.1, ruby-interpreter Description: Interpreter of object-oriented scripting language Ruby Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in perl). It is simple, straight-forward, and extensible. . In the name of this package, `1.9.1' indicates the Ruby library compatibility version. This package currently provides the `1.9.3' branch of Ruby, which is compatible with the `1.9.1' branch. Package: libruby1.9.1 Section: libs Architecture: any Depends: ruby1.9.1 (= ${binary:Version}), ca-certificates, ${shlibs:Depends}, ${misc:Depends} Conflicts: libdbm-ruby1.9.1, libgdbm-ruby1.9.1, libreadline-ruby1.9.1, libopenssl-ruby1.9.1, irb1.8 (<< 1.9.1.378-2~), rdoc1.8 (<< 1.9.1.378-2~) Replaces: libdbm-ruby1.9.1, libgdbm-ruby1.9.1, libreadline-ruby1.9.1, libopenssl-ruby1.9.1, irb1.8, rdoc1.8 Provides: libdbm-ruby1.9.1, libgdbm-ruby1.9.1, libreadline-ruby1.9.1, libopenssl-ruby1.9.1 Description: Libraries necessary to run Ruby 1.9.1 Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in perl). It is simple, straight-forward, and extensible. . This package includes the 'libruby-1.9.1' library, necessary to run Ruby 1.9. (API version 1.9.1) Package: libruby1.9.1-dbg Section: debug Priority: extra Architecture: any Depends: libruby1.9.1 (= ${binary:Version}), ${misc:Depends} Description: Debugging symbols for Ruby 1.9.1 Contains debugging symbols for libruby1.9.1. . This package is provided primarily to provide a backtrace with names in a debugger, this makes it somewhat easier to interpret core dumps. Most people will not need this package. Package: ruby1.9.1-dev Architecture: any Depends: libruby1.9.1 (= ${binary:Version}), libc6-dev, ${misc:Depends} Recommends: ruby1.9.1 (= ${binary:Version}) Description: Header files for compiling extension modules for the Ruby 1.9.1 Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in perl). It is simple, straight-forward, and extensible. . This package contains the header files and the mkmf library, necessary to make extension library for Ruby 1.9.1. It is also required to build many gems. Package: libtcltk-ruby1.9.1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Tcl/Tk interface for Ruby 1.9.1 tcltklib is an extension library for Ruby 1.9.1. It makes Ruby 1.9.1 programs to be able to use low level interface for the Tcl/Tk. Package: ruby1.9.1-examples Architecture: all Depends: ${misc:Depends} Suggests: ruby1.9.1 (>= ${source:Version}) Description: Examples for Ruby 1.9 This package provides example programs about Ruby 1.9.1. . Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in perl). It is simple, straight-forward, and extensible. Package: ri1.9.1 Architecture: all Depends: ruby1.9.1 (>= ${source:Version}), ${misc:Depends} Description: Ruby Interactive reference (for Ruby 1.9.1) ri is a command line tool that displays descriptions of built-in Ruby methods, classes, and modules. For methods, it shows you the calling sequence and a description. For classes and modules, it shows a synopsis along with a list of the methods the class or module implements. . This package provides ri command and descriptions about Ruby 1.9.1. This package provides the ri documentation for the Ruby 1.9.1 standard library. The ri1.9.1 executable itself is in the ruby1.9.1 package. Package: ruby1.9.1-full Architecture: all Depends: ruby1.9.1 (>= ${source:Version}), libruby1.9.1-dbg (>= ${source:Version}), ruby1.9.1-dev (>= ${source:Version}), ruby1.9.1-examples (>= ${source:Version}), ri1.9.1 (>= ${source:Version}), ${misc:Depends} Recommends: libtcltk-ruby1.9.1 (>= ${source:Version}) Description: Ruby 1.9.1 full installation For many good reasons, the Ruby programming language is split in many small different packages. Installing this package will make sure you have all the packages that add up to a full Ruby installation, with the exception of the Tcl/Tk bindings for Ruby, which are only recommended. . This package installs the dependencies for Ruby compatibility version 1.9.1 (currently Ruby 1.9.3). Package: ruby1.9.3 Architecture: all Depends: ruby1.9.1 (>= ${source:Version}), ${misc:Depends} Recommends: ruby1.9.1-full (>= ${source:Version}) Description: Interpreter of object-oriented scripting language Ruby, version 1.9.3 Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in perl). It is simple, straight-forward, and extensible. . Ruby uses two parallel versioning schemes: the `Ruby library compatibility version' (1.9.1 for this package), which is similar to a library SONAME, and the `Ruby version' (1.9.3 for this package). Ruby packages in Debian are named using the Ruby library compatibility version, which is sometimes confusing for users who do not follow Ruby development closely. This package depends on the ruby1.9.1 package, and provides compatibility symbolic links from 1.9.3 executables and manual pages to their 1.9.1 counterparts. debian/libruby1.9.1.prerm.in0000664000000000000000000000123412247132667012715 0ustar #! /bin/sh set -e case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear|deconfigure) if [ -w /usr/local/lib -a -e /usr/local/lib/site_ruby/@@verdir@@ ] then rmdir /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true rmdir /usr/local/lib/site_ruby/@@verdir@@ 2>/dev/null || true rmdir /usr/local/lib/site_ruby 2>/dev/null || true fi if [ -e /var/lib/gems/@@verdir@@ ] then rmdir /var/lib/gems/@@verdir@@ 2>/dev/null || true fi ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 0 esac #DEBHELPER#debian/README.source0000664000000000000000000000013012247132667011353 0ustar This package uses dpatch. See /usr/share/doc/dpatch/README.source.gz It also uses cdbs. debian/copyright0000664000000000000000000000774612247132667011153 0ustar This package was debianized by akira yamada on Sun, 13 Apr 2003 13:04:13 +0900. It was downloaded from Upstream Author: Yukihiro Matsumoto Copyright: Ruby's License: Ruby is copyrighted free software by Yukihiro Matsumoto . You can redistribute it and/or modify it under either the terms of the 2-clause BSDL (see the file BSDL), or the conditions below: 1. You may make and give away verbatim copies of the source form of the software without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may modify your copy of the software in any way, provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or by allowing the author to include your modifications in the software. b) use the modified software only within your corporation or organization. c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. d) make other distribution arrangements with the author. 3. You may distribute the software in object code or binary form, provided that you do at least ONE of the following: a) distribute the binaries and library files of the software, together with instructions (in the manual page or equivalent) on where to get the original distribution. b) accompany the distribution with the machine-readable source of the software. c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. d) make other distribution arrangements with the author. 4. You may modify and include the part of the software into any other software (possibly commercial). But some files in the distribution are not written by the author, so that they are not under these terms. For the list of those files and their copying conditions, see the file LEGAL. 5. The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this software. 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Content of the BSDL file: Copyright (C) 1993-2010 Yukihiro Matsumoto. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. debian/libruby1.9.1.postinst.in0000664000000000000000000000102112247132666013444 0ustar #! /bin/sh set -e if [ "$1" = "configure" ] then if [ -w /usr/local/lib -a ! -e /usr/local/lib/site_ruby/@@verdir@@ ] then mkdir -p /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true chown root:staff /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true chmod 2775 /usr/local/lib/site_ruby/@@verdir@@/@@arch@@ 2>/dev/null || true fi if [ -e /var/lib/gems/@@verdir@@/source_cache ] then rmdir /var/lib/gems/@@verdir@@/source_cache 2>/dev/null || true fi fi #DEBHELPER# debian/rmshebang.sh0000664000000000000000000000021412247132666011500 0ustar #!/bin/sh set -e target_dir=$1 [ -d $target_dir ] || exit 0 find "$target_dir" -name '*.rb' -type f -exec sed -i -e '1,1{ /^#!/d }' {} \+ debian/README.porters0000664000000000000000000000074712247132667011567 0ustar Run a test that fails during 'make test': LD_LIBRARY_PATH=. ./ruby1.9.1 -Ilib -I. -I.ext/common tool/runruby.rb --extout=.ext bootstraptest/runner.rb --ruby="./ruby1.9.1" -v bootstraptest/test_thread.rb Run a test that fails during 'make test-all': LD_LIBRARY_PATH=. ./ruby1.9.1 -Ilib -I. -I.ext/common tool/runruby.rb --extout=.ext test/drb/test_drb.rb -v or even: LD_LIBRARY_PATH=. ./ruby1.9.1 -Ilib -I. -I.ext/common tool/runruby.rb --extout=.ext test/drb/test_drb.rb -v -n test_04 debian/libruby1.9.1.symbols0000664000000000000000000011655712247132667012672 0ustar libruby-1.9.1.so.1.9 libruby1.9.1 #MINVER# OnigDefaultCaseFoldFlag@Base 1.9.2.0 OnigDefaultSyntax@Base 1.9.2.0 OnigEncAsciiCtypeTable@Base 1.9.2.0 OnigEncAsciiToLowerCaseTable@Base 1.9.2.0 OnigEncAsciiToUpperCaseTable@Base 1.9.2.0 OnigEncDefaultCharEncoding@Base 1.9.2.0 OnigEncISO_8859_1_ToLowerCaseTable@Base 1.9.2.0 OnigEncISO_8859_1_ToUpperCaseTable@Base 1.9.2.0 OnigEncodingASCII@Base 1.9.2.0 OnigSyntaxASIS@Base 1.9.2.0 OnigSyntaxEmacs@Base 1.9.2.0 OnigSyntaxGnuRegex@Base 1.9.2.0 OnigSyntaxGrep@Base 1.9.2.0 OnigSyntaxJava@Base 1.9.2.0 OnigSyntaxPerl@Base 1.9.2.0 OnigSyntaxPerl_NG@Base 1.9.2.0 OnigSyntaxPosixBasic@Base 1.9.2.0 OnigSyntaxPosixExtended@Base 1.9.2.0 OnigSyntaxRuby@Base 1.9.2.0 dln_find_exe@Base 1.9.2.0 dln_find_exe_r@Base 1.9.2.0 dln_find_file@Base 1.9.2.0 dln_find_file_r@Base 1.9.2.0 dln_load@Base 1.9.2.0 nucomp_canonicalization@Base 1.9.2.0 nurat_canonicalization@Base 1.9.2.0 onig_bbuf_init@Base 1.9.2.0 onig_chain_link_add@Base 1.9.2.0 onig_chain_reduce@Base 1.9.2.0 onig_compile@Base 1.9.2.0 onig_copy_encoding@Base 1.9.2.0 onig_copy_syntax@Base 1.9.2.0 onig_end@Base 1.9.2.0 onig_error_code_to_format@Base 1.9.2.0 onig_error_code_to_str@Base 1.9.2.0 onig_foreach_name@Base 1.9.2.0 onig_free@Base 1.9.2.0 onig_free_body@Base 1.9.2.0 onig_free_node_list@Base 1.9.2.0 onig_free_shared_cclass_table@Base 1.9.2.0 onig_get_case_fold_flag@Base 1.9.2.0 onig_get_default_case_fold_flag@Base 1.9.2.0 onig_get_encoding@Base 1.9.2.0 onig_get_match_stack_limit_size@Base 1.9.2.0 onig_get_options@Base 1.9.2.0 onig_get_syntax@Base 1.9.2.0 onig_get_syntax_behavior@Base 1.9.2.0 onig_get_syntax_op2@Base 1.9.2.0 onig_get_syntax_op@Base 1.9.2.0 onig_get_syntax_options@Base 1.9.2.0 onig_init@Base 1.9.2.0 onig_is_code_in_cc@Base 1.9.2.0 onig_is_code_in_cc_len@Base 1.9.2.0 onig_is_in_code_range@Base 1.9.2.0 onig_match@Base 1.9.2.0 onig_memsize@Base 1.9.2.0 onig_name_to_backref_number@Base 1.9.2.0 onig_name_to_group_numbers@Base 1.9.2.0 onig_names_free@Base 1.9.2.0 onig_new@Base 1.9.2.0 onig_new_without_alloc@Base 1.9.2.0 onig_node_conv_to_str_node@Base 1.9.2.0 onig_node_free@Base 1.9.2.0 onig_node_list_add@Base 1.9.2.0 onig_node_new_alt@Base 1.9.2.0 onig_node_new_anchor@Base 1.9.2.0 onig_node_new_enclose@Base 1.9.2.0 onig_node_new_list@Base 1.9.2.0 onig_node_new_str@Base 1.9.2.0 onig_node_str_cat@Base 1.9.2.0 onig_node_str_clear@Base 1.9.2.0 onig_node_str_set@Base 1.9.2.0 onig_noname_group_capture_is_active@Base 1.9.2.0 onig_null_warn@Base 1.9.2.0 onig_number_of_capture_histories@Base 1.9.2.0 onig_number_of_captures@Base 1.9.2.0 onig_number_of_names@Base 1.9.2.0 onig_parse_make_tree@Base 1.9.2.0 onig_reduce_nested_quantifier@Base 1.9.2.0 onig_reg_init@Base 1.9.2.0 onig_region_clear@Base 1.9.2.0 onig_region_copy@Base 1.9.2.0 onig_region_free@Base 1.9.2.0 onig_region_init@Base 1.9.2.0 onig_region_new@Base 1.9.2.0 onig_region_resize@Base 1.9.2.0 onig_region_set@Base 1.9.2.0 onig_renumber_name_table@Base 1.9.2.0 onig_scan_env_set_error_string@Base 1.9.2.0 onig_scan_unsigned_number@Base 1.9.2.0 onig_search@Base 1.9.2.0 onig_set_default_case_fold_flag@Base 1.9.2.0 onig_set_default_syntax@Base 1.9.2.0 onig_set_match_stack_limit_size@Base 1.9.2.0 onig_set_meta_char@Base 1.9.2.0 onig_set_syntax_behavior@Base 1.9.2.0 onig_set_syntax_op2@Base 1.9.2.0 onig_set_syntax_op@Base 1.9.2.0 onig_set_syntax_options@Base 1.9.2.0 onig_set_verb_warn_func@Base 1.9.2.0 onig_set_warn_func@Base 1.9.2.0 onig_snprintf_with_pattern@Base 1.9.2.0 onig_st_init_strend_table_with_size@Base 1.9.2.0 onig_st_insert_strend@Base 1.9.2.0 onig_st_lookup_strend@Base 1.9.2.0 onig_strcpy@Base 1.9.2.0 onig_strncmp@Base 1.9.2.0 onig_transfer@Base 1.9.2.0 onigenc_always_false_is_allowed_reverse_match@Base 1.9.2.0 onigenc_always_true_is_allowed_reverse_match@Base 1.9.2.0 onigenc_apply_all_case_fold_with_map@Base 1.9.2.0 onigenc_ascii_apply_all_case_fold@Base 1.9.2.0 onigenc_ascii_get_case_fold_codes_by_str@Base 1.9.2.0 onigenc_ascii_is_code_ctype@Base 1.9.2.0 onigenc_ascii_mbc_case_fold@Base 1.9.2.0 onigenc_get_case_fold_codes_by_str_with_map@Base 1.9.2.0 onigenc_get_default_encoding@Base 1.9.2.0 onigenc_get_left_adjust_char_head@Base 1.9.2.0 onigenc_get_prev_char_head@Base 1.9.2.0 onigenc_get_right_adjust_char_head@Base 1.9.2.0 onigenc_get_right_adjust_char_head_with_prev@Base 1.9.2.0 onigenc_init@Base 1.9.2.0 onigenc_is_mbc_newline_0x0a@Base 1.9.2.0 onigenc_mb2_code_to_mbc@Base 1.9.2.0 onigenc_mb2_code_to_mbclen@Base 1.9.2.0 onigenc_mb2_is_code_ctype@Base 1.9.2.0 onigenc_mb4_code_to_mbc@Base 1.9.2.0 onigenc_mb4_code_to_mbclen@Base 1.9.2.0 onigenc_mb4_is_code_ctype@Base 1.9.2.0 onigenc_mbclen_approximate@Base 1.9.2.0 onigenc_mbn_mbc_case_fold@Base 1.9.2.0 onigenc_mbn_mbc_to_code@Base 1.9.2.0 onigenc_minimum_property_name_to_ctype@Base 1.9.2.0 onigenc_not_support_get_ctype_code_range@Base 1.9.2.0 onigenc_property_list_add_property@Base 1.9.2.0 onigenc_property_list_init@Base 1.9.2.0 onigenc_set_default_caseconv_table@Base 1.9.2.0 onigenc_set_default_encoding@Base 1.9.2.0 onigenc_single_byte_code_to_mbc@Base 1.9.2.0 onigenc_single_byte_code_to_mbclen@Base 1.9.2.0 onigenc_single_byte_left_adjust_char_head@Base 1.9.2.0 onigenc_single_byte_mbc_enc_len@Base 1.9.2.0 onigenc_single_byte_mbc_to_code@Base 1.9.2.0 onigenc_step@Base 1.9.2.0 onigenc_step_back@Base 1.9.2.0 onigenc_str_bytelen_null@Base 1.9.2.0 onigenc_strlen@Base 1.9.2.0 onigenc_strlen_null@Base 1.9.2.0 onigenc_unicode_apply_all_case_fold@Base 1.9.2.0 onigenc_unicode_ctype_code_range@Base 1.9.2.0 onigenc_unicode_get_case_fold_codes_by_str@Base 1.9.2.0 onigenc_unicode_is_code_ctype@Base 1.9.2.0 onigenc_unicode_mbc_case_fold@Base 1.9.2.0 onigenc_unicode_property_name_to_ctype@Base 1.9.2.0 onigenc_utf16_32_get_ctype_code_range@Base 1.9.2.0 onigenc_with_ascii_strncmp@Base 1.9.2.0 rb_Array@Base 1.9.2.0 rb_Complex@Base 1.9.2.0 rb_Float@Base 1.9.2.0 rb_Integer@Base 1.9.2.0 rb_Rational@Base 1.9.2.0 rb_String@Base 1.9.2.0 rb_add_event_hook@Base 1.9.2.0 rb_alias@Base 1.9.2.0 rb_alias_variable@Base 1.9.2.0 rb_alloc_tmp_buffer@Base 1.9.3~rc1 rb_any_to_s@Base 1.9.2.0 rb_apply@Base 1.9.2.0 rb_argv0@Base 1.9.2.0 rb_ary_aref@Base 1.9.2.0 rb_ary_assoc@Base 1.9.2.0 rb_ary_clear@Base 1.9.2.0 rb_ary_cmp@Base 1.9.2.0 rb_ary_concat@Base 1.9.2.0 rb_ary_delete@Base 1.9.2.0 rb_ary_delete_at@Base 1.9.2.0 rb_ary_dup@Base 1.9.2.0 rb_ary_each@Base 1.9.2.0 rb_ary_entry@Base 1.9.2.0 rb_ary_free@Base 1.9.2.0 rb_ary_freeze@Base 1.9.2.0 rb_ary_includes@Base 1.9.2.0 rb_ary_join@Base 1.9.2.0 rb_ary_memsize@Base 1.9.2.0 rb_ary_modify@Base 1.9.3~rc1 rb_ary_new2@Base 1.9.2.0 rb_ary_new3@Base 1.9.2.0 rb_ary_new4@Base 1.9.2.0 rb_ary_new@Base 1.9.2.0 rb_ary_plus@Base 1.9.2.0 rb_ary_pop@Base 1.9.2.0 rb_ary_push@Base 1.9.2.0 rb_ary_rassoc@Base 1.9.2.0 rb_ary_replace@Base 1.9.2.0 rb_ary_resize@Base 1.9.3~rc1 rb_ary_resurrect@Base 1.9.2.0 rb_ary_reverse@Base 1.9.2.0 rb_ary_shift@Base 1.9.2.0 rb_ary_sort@Base 1.9.2.0 rb_ary_sort_bang@Base 1.9.2.0 rb_ary_store@Base 1.9.2.0 rb_ary_subseq@Base 1.9.2.0 rb_ary_tmp_new@Base 1.9.2.0 rb_ary_to_ary@Base 1.9.2.0 rb_ary_to_s@Base 1.9.2.0 rb_ary_unshift@Base 1.9.2.0 rb_ascii8bit_encindex@Base 1.9.2.0 rb_ascii8bit_encoding@Base 1.9.2.0 rb_assoc_new@Base 1.9.2.0 rb_attr@Base 1.9.2.0 rb_attr_get@Base 1.9.2.0 rb_autoload@Base 1.9.2.0 rb_autoload_load@Base 1.9.2.0 rb_autoload_p@Base 1.9.2.0 rb_backref_get@Base 1.9.2.0 rb_backref_set@Base 1.9.2.0 rb_backtrace@Base 1.9.2.0 rb_barrier_destroy@Base 1.9.2.0 rb_barrier_new@Base 1.9.2.0 rb_barrier_release@Base 1.9.2.0 rb_barrier_wait@Base 1.9.2.0 rb_big2dbl@Base 1.9.2.0 rb_big2ll@Base 1.9.2.0 rb_big2long@Base 1.9.2.0 rb_big2str0@Base 1.9.2.0 rb_big2str@Base 1.9.2.0 rb_big2ull@Base 1.9.2.0 rb_big2ulong@Base 1.9.2.0 rb_big2ulong_pack@Base 1.9.2.0 rb_big_2comp@Base 1.9.2.0 rb_big_and@Base 1.9.2.0 rb_big_clone@Base 1.9.2.0 rb_big_cmp@Base 1.9.2.0 rb_big_div@Base 1.9.2.0 rb_big_divmod@Base 1.9.2.0 rb_big_eq@Base 1.9.2.0 rb_big_eql@Base 1.9.3.362 rb_big_idiv@Base 1.9.2.0 rb_big_lshift@Base 1.9.2.0 rb_big_minus@Base 1.9.2.0 rb_big_modulo@Base 1.9.2.0 rb_big_mul@Base 1.9.2.0 rb_big_new@Base 1.9.2.0 rb_big_norm@Base 1.9.2.0 rb_big_or@Base 1.9.2.0 rb_big_pack@Base 1.9.2.0 rb_big_plus@Base 1.9.2.0 rb_big_pow@Base 1.9.2.0 rb_big_resize@Base 1.9.2.0 rb_big_rshift@Base 1.9.2.0 rb_big_unpack@Base 1.9.2.0 rb_big_xor@Base 1.9.2.0 rb_bigzero_p@Base 1.9.2.0 rb_binding_new@Base 1.9.2.0 rb_block_call@Base 1.9.2.0 rb_block_given_p@Base 1.9.2.0 rb_block_lambda@Base 1.9.3.448 rb_block_proc@Base 1.9.2.0 rb_bug@Base 1.9.2.0 rb_bug_errno@Base 1.9.2.0 rb_cArray@Base 1.9.2.0 rb_cBasicObject@Base 1.9.2.0 rb_cBignum@Base 1.9.2.0 rb_cBinding@Base 1.9.2.0 rb_cClass@Base 1.9.2.0 rb_cComplex@Base 1.9.2.0 rb_cData@Base 1.9.2.0 rb_cDir@Base 1.9.2.0 rb_cEncoding@Base 1.9.2.0 rb_cEnumerator@Base 1.9.2.0 rb_cEnv@Base 1.9.2.0 rb_cFalseClass@Base 1.9.2.0 rb_cFile@Base 1.9.2.0 rb_cFixnum@Base 1.9.2.0 rb_cFloat@Base 1.9.2.0 rb_cHash@Base 1.9.2.0 rb_cIO@Base 1.9.2.0 rb_cISeq@Base 1.9.2.0 rb_cInteger@Base 1.9.2.0 rb_cMatch@Base 1.9.2.0 rb_cMethod@Base 1.9.2.0 rb_cModule@Base 1.9.2.0 rb_cNameErrorMesg@Base 1.9.2.0 rb_cNilClass@Base 1.9.2.0 rb_cNumeric@Base 1.9.2.0 rb_cObject@Base 1.9.2.0 rb_cProc@Base 1.9.2.0 rb_cRandom@Base 1.9.2.0 rb_cRange@Base 1.9.2.0 rb_cRational@Base 1.9.2.0 rb_cRegexp@Base 1.9.2.0 rb_cRubyVM@Base 1.9.2.0 rb_cStat@Base 1.9.2.0 rb_cString@Base 1.9.2.0 rb_cStruct@Base 1.9.2.0 rb_cSymbol@Base 1.9.2.0 rb_cThread@Base 1.9.2.0 rb_cTime@Base 1.9.2.0 rb_cTrueClass@Base 1.9.2.0 rb_cUnboundMethod@Base 1.9.2.0 rb_call_super@Base 1.9.2.0 rb_catch@Base 1.9.2.0 rb_catch_obj@Base 1.9.2.0 rb_char_to_option_kcode@Base 1.9.2.0 rb_check_array_type@Base 1.9.2.0 rb_check_convert_type@Base 1.9.2.0 rb_check_frozen@Base 1.9.2.0 rb_check_funcall@Base 1.9.2.0 rb_check_hash_type@Base 1.9.3~rc1 rb_check_inheritable@Base 1.9.2.0 rb_check_safe_obj@Base 1.9.2.0 rb_check_safe_str@Base 1.9.2.0 rb_check_string_type@Base 1.9.2.0 rb_check_to_float@Base 1.9.2.0 rb_check_to_integer@Base 1.9.2.0 rb_check_type@Base 1.9.2.0 rb_check_typeddata@Base 1.9.2.0 rb_class2name@Base 1.9.2.0 rb_class_boot@Base 1.9.2.0 rb_class_get_superclass@Base 1.9.3~rc1 rb_class_inherited@Base 1.9.2.0 rb_class_inherited_p@Base 1.9.2.0 rb_class_instance_methods@Base 1.9.2.0 rb_class_name@Base 1.9.2.0 rb_class_new@Base 1.9.2.0 rb_class_new_instance@Base 1.9.2.0 rb_class_path@Base 1.9.2.0 rb_class_private_instance_methods@Base 1.9.2.0 rb_class_protected_instance_methods@Base 1.9.2.0 rb_class_public_instance_methods@Base 1.9.2.0 rb_class_real@Base 1.9.2.0 rb_class_superclass@Base 1.9.3~rc1 rb_clear_cache@Base 1.9.2.0 rb_clear_cache_by_class@Base 1.9.2.0 rb_close_before_exec@Base 1.9.2.0 rb_cmperr@Base 1.9.2.0 rb_cmpint@Base 1.9.2.0 rb_compile_cstr@Base 1.9.2.0 rb_compile_error@Base 1.9.2.0 rb_compile_error_append@Base 1.9.2.0 rb_compile_error_with_enc@Base 1.9.3~rc1 rb_compile_file@Base 1.9.2.0 rb_compile_string@Base 1.9.2.0 rb_compile_warn@Base 1.9.2.0 rb_compile_warning@Base 1.9.2.0 rb_complex_new@Base 1.9.2.0 rb_complex_polar@Base 1.9.2.0 rb_complex_raw@Base 1.9.2.0 rb_const_defined@Base 1.9.2.0 rb_const_defined_at@Base 1.9.2.0 rb_const_defined_from@Base 1.9.2.0 rb_const_get@Base 1.9.2.0 rb_const_get_at@Base 1.9.2.0 rb_const_get_from@Base 1.9.2.0 rb_const_list@Base 1.9.2.0 rb_const_remove@Base 1.9.2.0 rb_const_set@Base 1.9.2.0 rb_convert_type@Base 1.9.2.0 rb_copy_generic_ivar@Base 1.9.2.0 rb_cstr2inum@Base 1.9.2.0 rb_cstr_to_dbl@Base 1.9.2.0 rb_cstr_to_inum@Base 1.9.2.0 rb_cv_get@Base 1.9.2.0 rb_cv_set@Base 1.9.2.0 rb_cvar_defined@Base 1.9.2.0 rb_cvar_get@Base 1.9.2.0 rb_cvar_set@Base 1.9.2.0 rb_data_object_alloc@Base 1.9.2.0 rb_data_typed_object_alloc@Base 1.9.2.0 rb_dbl2big@Base 1.9.2.0 rb_dbl_cmp@Base 1.9.2.0 rb_declare_transcoder@Base 1.9.2.0 rb_default_external_encoding@Base 1.9.2.0 rb_default_internal_encoding@Base 1.9.2.0 rb_default_rs@Base 1.9.2.0 rb_define_alias@Base 1.9.2.0 rb_define_alloc_func@Base 1.9.2.0 rb_define_attr@Base 1.9.2.0 rb_define_class@Base 1.9.2.0 rb_define_class_id@Base 1.9.2.0 rb_define_class_id_under@Base 1.9.2.0 rb_define_class_under@Base 1.9.2.0 rb_define_class_variable@Base 1.9.2.0 rb_define_const@Base 1.9.2.0 rb_define_dummy_encoding@Base 1.9.2.0 rb_define_global_const@Base 1.9.2.0 rb_define_global_function@Base 1.9.2.0 rb_define_hooked_variable@Base 1.9.2.0 rb_define_method@Base 1.9.2.0 rb_define_method_id@Base 1.9.2.0 rb_define_module@Base 1.9.2.0 rb_define_module_function@Base 1.9.2.0 rb_define_module_id@Base 1.9.2.0 rb_define_module_id_under@Base 1.9.2.0 rb_define_module_under@Base 1.9.2.0 rb_define_private_method@Base 1.9.2.0 rb_define_protected_method@Base 1.9.2.0 rb_define_readonly_variable@Base 1.9.2.0 rb_define_singleton_method@Base 1.9.2.0 rb_define_variable@Base 1.9.2.0 rb_define_virtual_variable@Base 1.9.2.0 rb_detach_process@Base 1.9.2.0 rb_dir_getwd@Base 1.9.2.0 rb_disable_interrupt@Base 1.9.2.0 rb_during_gc@Base 1.9.2.0 rb_eArgError@Base 1.9.2.0 rb_eEOFError@Base 1.9.2.0 rb_eEncCompatError@Base 1.9.2.0 rb_eEncodingError@Base 1.9.2.0 rb_eException@Base 1.9.2.0 rb_eFatal@Base 1.9.2.0 rb_eFloatDomainError@Base 1.9.2.0 rb_eIOError@Base 1.9.2.0 rb_eIndexError@Base 1.9.2.0 rb_eInterrupt@Base 1.9.2.0 rb_eKeyError@Base 1.9.2.0 rb_eLoadError@Base 1.9.2.0 rb_eLocalJumpError@Base 1.9.2.0 rb_eMathDomainError@Base 1.9.2.0 rb_eNameError@Base 1.9.2.0 rb_eNoMemError@Base 1.9.2.0 rb_eNoMethodError@Base 1.9.2.0 rb_eNotImpError@Base 1.9.2.0 rb_eRangeError@Base 1.9.2.0 rb_eRegexpError@Base 1.9.2.0 rb_eRuntimeError@Base 1.9.2.0 rb_eScriptError@Base 1.9.2.0 rb_eSecurityError@Base 1.9.2.0 rb_eSignal@Base 1.9.2.0 rb_eStandardError@Base 1.9.2.0 rb_eStopIteration@Base 1.9.2.0 rb_eSyntaxError@Base 1.9.2.0 rb_eSysStackError@Base 1.9.2.0 rb_eSystemCallError@Base 1.9.2.0 rb_eSystemExit@Base 1.9.2.0 rb_eThreadError@Base 1.9.2.0 rb_eTypeError@Base 1.9.2.0 rb_eZeroDivError@Base 1.9.2.0 rb_each@Base 1.9.2.0 rb_econv_asciicompat_encoding@Base 1.9.2.0 rb_econv_binmode@Base 1.9.2.0 rb_econv_check_error@Base 1.9.2.0 rb_econv_close@Base 1.9.2.0 rb_econv_convert@Base 1.9.2.0 rb_econv_decorate_at_first@Base 1.9.2.0 rb_econv_decorate_at_last@Base 1.9.2.0 rb_econv_encoding_to_insert_output@Base 1.9.2.0 rb_econv_has_convpath_p@Base 1.9.2.0 rb_econv_insert_output@Base 1.9.2.0 rb_econv_make_exception@Base 1.9.2.0 rb_econv_open@Base 1.9.2.0 rb_econv_open_exc@Base 1.9.2.0 rb_econv_open_opts@Base 1.9.2.0 rb_econv_prepare_options@Base 1.9.3~rc1 rb_econv_prepare_opts@Base 1.9.2.0 rb_econv_putback@Base 1.9.2.0 rb_econv_putbackable@Base 1.9.2.0 rb_econv_set_replacement@Base 1.9.2.0 rb_econv_str_append@Base 1.9.2.0 rb_econv_str_convert@Base 1.9.2.0 rb_econv_substr_append@Base 1.9.2.0 rb_econv_substr_convert@Base 1.9.2.0 rb_enable_interrupt@Base 1.9.2.0 rb_enc_ascget@Base 1.9.2.0 rb_enc_associate@Base 1.9.2.0 rb_enc_associate_index@Base 1.9.2.0 rb_enc_check@Base 1.9.2.0 rb_enc_codelen@Base 1.9.2.0 rb_enc_codepoint@Base 1.9.2.0 rb_enc_codepoint_len@Base 1.9.2.0 rb_enc_compatible@Base 1.9.2.0 rb_enc_copy@Base 1.9.2.0 rb_enc_default_external@Base 1.9.2.0 rb_enc_default_internal@Base 1.9.2.0 rb_enc_fast_mbclen@Base 1.9.2.0 rb_enc_find@Base 1.9.2.0 rb_enc_find_index@Base 1.9.2.0 rb_enc_from_encoding@Base 1.9.2.0 rb_enc_from_index@Base 1.9.2.0 rb_enc_get@Base 1.9.2.0 rb_enc_get_index@Base 1.9.2.0 rb_enc_mbclen@Base 1.9.2.0 rb_enc_nth@Base 1.9.2.0 rb_enc_path_end@Base 1.9.3.327 rb_enc_path_last_separator@Base 1.9.3.327 rb_enc_path_next@Base 1.9.3.327 rb_enc_path_skip_prefix@Base 1.9.3.327 rb_enc_precise_mbclen@Base 1.9.2.0 rb_enc_reg_new@Base 1.9.2.0 rb_enc_register@Base 1.9.2.0 rb_enc_replicate@Base 1.9.2.0 rb_enc_set_base@Base 1.9.2.0 rb_enc_set_default_external@Base 1.9.2.0 rb_enc_set_default_internal@Base 1.9.2.0 rb_enc_set_index@Base 1.9.2.0 rb_enc_sprintf@Base 1.9.2.0 rb_enc_str_asciionly_p@Base 1.9.2.0 rb_enc_str_buf_cat@Base 1.9.2.0 rb_enc_str_coderange@Base 1.9.2.0 rb_enc_str_new@Base 1.9.2.0 rb_enc_strlen@Base 1.9.2.0 rb_enc_symname2_p@Base 1.9.2.0 rb_enc_symname_p@Base 1.9.2.0 rb_enc_tolower@Base 1.9.2.0 rb_enc_toupper@Base 1.9.2.0 rb_enc_uint_chr@Base 1.9.2.290 rb_enc_unicode_p@Base 1.9.2.0 rb_enc_vsprintf@Base 1.9.2.0 rb_encdb_alias@Base 1.9.2.0 rb_encdb_declare@Base 1.9.2.0 rb_encdb_dummy@Base 1.9.2.0 rb_encdb_replicate@Base 1.9.2.0 rb_ensure@Base 1.9.2.0 rb_enumeratorize@Base 1.9.2.0 rb_env_clear@Base 1.9.2.0 rb_env_path_tainted@Base 1.9.2.0 rb_eof_error@Base 1.9.2.0 rb_eql@Base 1.9.2.0 rb_equal@Base 1.9.2.0 rb_errinfo@Base 1.9.2.0 rb_error_frozen@Base 1.9.2.0 rb_eval_cmd@Base 1.9.2.0 rb_eval_string@Base 1.9.2.0 rb_eval_string_protect@Base 1.9.2.0 rb_eval_string_wrap@Base 1.9.2.0 rb_exc_fatal@Base 1.9.2.0 rb_exc_new2@Base 1.9.2.0 rb_exc_new3@Base 1.9.2.0 rb_exc_new@Base 1.9.2.0 rb_exc_raise@Base 1.9.2.0 rb_exec@Base 1.9.2.0 rb_exec_arg_addopt@Base 1.9.2.0 rb_exec_arg_fixup@Base 1.9.2.0 rb_exec_arg_init@Base 1.9.2.0 rb_exec_end_proc@Base 1.9.2.0 rb_exec_err@Base 1.9.2.0 rb_exec_recursive@Base 1.9.2.0 rb_exec_recursive_outer@Base 1.9.2.0 rb_exec_recursive_paired@Base 1.9.2.0 rb_exit@Base 1.9.2.0 rb_extend_object@Base 1.9.2.0 rb_external_str_new@Base 1.9.2.0 rb_external_str_new_cstr@Base 1.9.2.0 rb_external_str_new_with_enc@Base 1.9.2.0 rb_f_abort@Base 1.9.2.0 rb_f_exec@Base 1.9.2.0 rb_f_exit@Base 1.9.2.0 rb_f_global_variables@Base 1.9.2.0 rb_f_kill@Base 1.9.2.0 rb_f_lambda@Base 1.9.2.0 rb_f_notimplement@Base 1.9.2.0 rb_f_require@Base 1.9.2.0 rb_f_sprintf@Base 1.9.2.0 rb_f_trace_var@Base 1.9.2.0 rb_f_untrace_var@Base 1.9.2.0 rb_fatal@Base 1.9.2.0 rb_fd_clr@Base 1.9.2.0 rb_fd_copy@Base 1.9.2.0 rb_fd_dup@Base 1.9.3~rc1 rb_fd_init@Base 1.9.2.0 rb_fd_isset@Base 1.9.2.0 rb_fd_select@Base 1.9.2.0 rb_fd_set@Base 1.9.2.0 rb_fd_term@Base 1.9.2.0 rb_fd_zero@Base 1.9.2.0 rb_fdopen@Base 1.9.2.0 rb_feature_provided@Base 1.9.2.0 rb_fiber_alive_p@Base 1.9.2.0 rb_fiber_current@Base 1.9.2.0 rb_fiber_new@Base 1.9.2.0 rb_fiber_resume@Base 1.9.2.0 rb_fiber_yield@Base 1.9.2.0 rb_file_absolute_path@Base 1.9.2.0 rb_file_const@Base 1.9.2.0 rb_file_directory_p@Base 1.9.2.0 rb_file_dirname@Base 1.9.2.0 rb_file_expand_path@Base 1.9.2.0 rb_file_load_ok@Base 1.9.2.0 rb_file_open@Base 1.9.2.0 rb_file_open_str@Base 1.9.2.0 rb_file_s_absolute_path@Base 1.9.2.0 rb_file_s_expand_path@Base 1.9.2.0 rb_filesystem_encindex@Base 1.9.2.0 rb_filesystem_encoding@Base 1.9.2.0 rb_filesystem_str_new@Base 1.9.2.0 rb_filesystem_str_new_cstr@Base 1.9.2.0 rb_find_file@Base 1.9.2.0 rb_find_file_ext@Base 1.9.2.0 rb_find_file_ext_safe@Base 1.9.2.0 rb_find_file_safe@Base 1.9.2.0 (arch=amd64)rb_fix2int@Base 1.9.2.0 rb_fix2str@Base 1.9.2.0 (arch=amd64)rb_fix2uint@Base 1.9.2.0 rb_float_new@Base 1.9.2.0 rb_fork@Base 1.9.2.0 rb_fork_err@Base 1.9.2.0 rb_frame_callee@Base 1.9.2.0 rb_frame_method_id_and_class@Base 1.9.2.0 rb_frame_pop@Base 1.9.2.0 rb_frame_this_func@Base 1.9.2.0 rb_free_generic_ivar@Base 1.9.2.0 rb_free_tmp_buffer@Base 1.9.3~rc1 rb_frozen_class_p@Base 1.9.2.0 rb_fs@Base 1.9.2.0 rb_funcall2@Base 1.9.2.0 rb_funcall3@Base 1.9.2.0 rb_funcall@Base 1.9.2.0 rb_funcall_passing_block@Base 1.9.2.290 rb_funcall_with_block@Base 1.9.3.448 rb_gc@Base 1.9.2.0 rb_gc_call_finalizer_at_exit@Base 1.9.2.0 rb_gc_copy_finalizer@Base 1.9.2.0 rb_gc_disable@Base 1.9.2.0 rb_gc_enable@Base 1.9.2.0 rb_gc_finalize_deferred@Base 1.9.2.0 rb_gc_force_recycle@Base 1.9.2.0 rb_gc_mark@Base 1.9.2.0 rb_gc_mark_global_tbl@Base 1.9.2.0 rb_gc_mark_locations@Base 1.9.2.0 rb_gc_mark_maybe@Base 1.9.2.0 rb_gc_mark_parser@Base 1.9.2.0 rb_gc_mark_symbols@Base 1.9.2.0 rb_gc_mark_threads@Base 1.9.2.0 rb_gc_register_address@Base 1.9.2.0 rb_gc_register_mark_object@Base 1.9.2.0 rb_gc_set_params@Base 1.9.3~rc1 rb_gc_start@Base 1.9.2.0 rb_gc_unregister_address@Base 1.9.2.0 rb_generic_ivar_memsize@Base 1.9.2.0 rb_generic_ivar_table@Base 1.9.2.0 rb_genrand_int32@Base 1.9.2.0 rb_genrand_real@Base 1.9.2.0 rb_genrand_ulong_limited@Base 1.9.3~rc1 rb_get_alloc_func@Base 1.9.2.0 rb_get_argv@Base 1.9.2.0 rb_get_coverages@Base 1.9.2.0 rb_get_path@Base 1.9.2.0 rb_get_path_no_checksafe@Base 1.9.2.0 rb_get_values_at@Base 1.9.2.0 rb_gets@Base 1.9.2.0 rb_glob@Base 1.9.2.0 rb_global_entry@Base 1.9.2.0 rb_global_variable@Base 1.9.2.0 rb_gv_get@Base 1.9.2.0 rb_gv_set@Base 1.9.2.0 rb_gvar_defined@Base 1.9.2.0 rb_gvar_get@Base 1.9.2.0 rb_gvar_readonly_setter@Base 1.9.2.0 rb_gvar_set@Base 1.9.2.0 rb_gvar_undef_getter@Base 1.9.2.0 rb_gvar_undef_marker@Base 1.9.2.0 rb_gvar_undef_setter@Base 1.9.2.0 rb_gvar_val_getter@Base 1.9.2.0 rb_gvar_val_marker@Base 1.9.2.0 rb_gvar_val_setter@Base 1.9.2.0 rb_gvar_var_getter@Base 1.9.2.0 rb_gvar_var_marker@Base 1.9.2.0 rb_gvar_var_setter@Base 1.9.2.0 rb_hash@Base 1.9.2.0 rb_hash_aref@Base 1.9.2.0 rb_hash_aset@Base 1.9.2.0 rb_hash_delete@Base 1.9.2.0 rb_hash_delete_if@Base 1.9.2.0 rb_hash_dup@Base 1.9.2.0 rb_hash_fetch@Base 1.9.2.0 rb_hash_foreach@Base 1.9.2.0 rb_hash_freeze@Base 1.9.2.0 rb_hash_lookup2@Base 1.9.2.0 rb_hash_lookup@Base 1.9.2.0 rb_hash_new@Base 1.9.2.0 rb_hash_start@Base 1.9.2.0 rb_hash_tbl@Base 1.9.2.0 rb_hash_update_by@Base 1.9.3~rc1 rb_id2name@Base 1.9.2.0 rb_id2str@Base 1.9.2.0 rb_id_attrset@Base 1.9.2.0 rb_include_module@Base 1.9.2.0 rb_infinity@Base 1.9.2.0 rb_insecure_operation@Base 1.9.2.0 rb_inspect@Base 1.9.2.0 rb_int2big@Base 1.9.2.0 rb_int2inum@Base 1.9.2.0 rb_intern2@Base 1.9.2.0 rb_intern3@Base 1.9.2.0 rb_intern@Base 1.9.2.0 rb_intern_str@Base 1.9.2.0 rb_interrupt@Base 1.9.2.0 rb_invalid_str@Base 1.9.2.0 rb_io_addstr@Base 1.9.2.0 rb_io_ascii8bit_binmode@Base 1.9.2.0 rb_io_binmode@Base 1.9.2.0 rb_io_bufwrite@Base 1.9.3~rc1 rb_io_check_byte_readable@Base 1.9.2.0 rb_io_check_char_readable@Base 1.9.2.0 rb_io_check_closed@Base 1.9.2.0 rb_io_check_initialized@Base 1.9.2.0 rb_io_check_readable@Base 1.9.2.0 rb_io_check_writable@Base 1.9.2.0 rb_io_close@Base 1.9.2.0 rb_io_eof@Base 1.9.2.0 rb_io_extract_encoding_option@Base 1.9.2.0 rb_io_fdopen@Base 1.9.2.0 rb_io_flush@Base 1.9.2.0 rb_io_fptr_finalize@Base 1.9.2.0 rb_io_get_io@Base 1.9.2.0 rb_io_get_write_io@Base 1.9.2.0 rb_io_getbyte@Base 1.9.2.0 rb_io_gets@Base 1.9.2.0 rb_io_memsize@Base 1.9.2.0 rb_io_modestr_fmode@Base 1.9.2.0 rb_io_modestr_oflags@Base 1.9.2.0 rb_io_oflags_fmode@Base 1.9.2.0 rb_io_print@Base 1.9.2.0 rb_io_printf@Base 1.9.2.0 rb_io_puts@Base 1.9.2.0 rb_io_read_check@Base 1.9.2.0 rb_io_read_pending@Base 1.9.2.0 rb_io_set_nonblock@Base 1.9.2.0 rb_io_set_write_io@Base 1.9.3~rc1 rb_io_stdio_file@Base 1.9.2.0 rb_io_synchronized@Base 1.9.2.0 rb_io_taint_check@Base 1.9.2.0 rb_io_ungetbyte@Base 1.9.2.0 rb_io_ungetc@Base 1.9.2.0 rb_io_wait_readable@Base 1.9.2.0 rb_io_wait_writable@Base 1.9.2.0 rb_io_write@Base 1.9.2.0 rb_is_absolute_path@Base 1.9.2.0 rb_is_class_id@Base 1.9.2.0 rb_is_const_id@Base 1.9.2.0 rb_is_instance_id@Base 1.9.2.0 rb_is_junk_id@Base 1.9.2.0 rb_is_local_id@Base 1.9.2.0 rb_isalnum@Base 1.9.2.0 rb_isalpha@Base 1.9.2.0 rb_isblank@Base 1.9.2.0 rb_iscntrl@Base 1.9.2.0 rb_isdigit@Base 1.9.2.0 rb_iseq_build_from_ary@Base 1.9.2.0 rb_iseq_compile@Base 1.9.2.0 rb_iseq_compile_node@Base 1.9.2.0 rb_iseq_compile_with_option@Base 1.9.2.0 rb_iseq_disasm@Base 1.9.2.0 rb_iseq_disasm_insn@Base 1.9.2.0 rb_iseq_eval@Base 1.9.2.0 rb_iseq_eval_main@Base 1.9.2.0 rb_iseq_first_lineno@Base 1.9.2.0 rb_iseq_load@Base 1.9.2.0 rb_iseq_new@Base 1.9.2.0 rb_iseq_new_main@Base 1.9.2.0 rb_iseq_new_top@Base 1.9.2.0 rb_iseq_new_with_bopt@Base 1.9.2.0 rb_iseq_new_with_opt@Base 1.9.2.0 rb_iseq_parameters@Base 1.9.2.0 rb_iseq_translate_threaded_code@Base 1.9.2.0 rb_isgraph@Base 1.9.2.0 rb_islower@Base 1.9.2.0 rb_isprint@Base 1.9.2.0 rb_ispunct@Base 1.9.2.0 rb_isspace@Base 1.9.2.0 rb_isupper@Base 1.9.2.0 rb_isxdigit@Base 1.9.2.0 rb_iter_break@Base 1.9.2.0 rb_iterate@Base 1.9.2.0 rb_iv_get@Base 1.9.2.0 rb_iv_set@Base 1.9.2.0 rb_ivar_count@Base 1.9.2.0 rb_ivar_defined@Base 1.9.2.0 rb_ivar_foreach@Base 1.9.2.0 rb_ivar_get@Base 1.9.2.0 rb_ivar_set@Base 1.9.2.0 rb_jump_tag@Base 1.9.2.0 rb_last_status_get@Base 1.9.2.0 rb_last_status_set@Base 1.9.2.0 rb_lastline_get@Base 1.9.2.0 rb_lastline_set@Base 1.9.2.0 rb_ll2inum@Base 1.9.2.0 rb_load@Base 1.9.2.0 rb_load_fail@Base 1.9.2.0 rb_load_file@Base 1.9.2.0 rb_load_protect@Base 1.9.2.0 rb_loaderror@Base 1.9.2.0 rb_locale_charmap@Base 1.9.2.0 rb_locale_encindex@Base 1.9.2.0 rb_locale_encoding@Base 1.9.2.0 rb_locale_str_new@Base 1.9.2.0 rb_locale_str_new_cstr@Base 1.9.2.0 rb_mComparable@Base 1.9.2.0 rb_mEnumerable@Base 1.9.2.0 rb_mErrno@Base 1.9.2.0 rb_mFileTest@Base 1.9.2.0 rb_mGC@Base 1.9.2.0 rb_mKernel@Base 1.9.2.0 rb_mMath@Base 1.9.2.0 rb_mProcess@Base 1.9.2.0 rb_mRubyVMFrozenCore@Base 1.9.2.0 rb_mWaitReadable@Base 1.9.2.0 rb_mWaitWritable@Base 1.9.2.0 rb_make_backtrace@Base 1.9.2.0 rb_make_exception@Base 1.9.2.0 rb_make_metaclass@Base 1.9.2.0 rb_mark_end_proc@Base 1.9.2.0 rb_mark_generic_ivar@Base 1.9.2.0 rb_mark_generic_ivar_tbl@Base 1.9.2.0 rb_mark_hash@Base 1.9.2.0 rb_mark_set@Base 1.9.2.0 rb_mark_tbl@Base 1.9.2.0 rb_marshal_define_compat@Base 1.9.2.0 rb_marshal_dump@Base 1.9.2.0 rb_marshal_load@Base 1.9.2.0 rb_match_busy@Base 1.9.2.0 rb_mem_clear@Base 1.9.2.0 rb_memcicmp@Base 1.9.2.0 rb_memerror@Base 1.9.2.0 rb_memhash@Base 1.9.2.0 rb_memsearch@Base 1.9.2.0 rb_method_basic_definition_p@Base 1.9.2.0 rb_method_boundp@Base 1.9.2.0 rb_method_call@Base 1.9.2.0 rb_method_call_with_block@Base 1.9.3.448 rb_method_get_iseq@Base 1.9.2.0 rb_mod_ancestors@Base 1.9.2.0 rb_mod_class_variables@Base 1.9.2.0 rb_mod_const_at@Base 1.9.2.0 rb_mod_const_missing@Base 1.9.2.0 rb_mod_const_of@Base 1.9.2.0 rb_mod_constants@Base 1.9.2.0 rb_mod_include_p@Base 1.9.2.0 rb_mod_included_modules@Base 1.9.2.0 rb_mod_init_copy@Base 1.9.2.0 rb_mod_method_arity@Base 1.9.2.0 rb_mod_module_eval@Base 1.9.2.0 rb_mod_module_exec@Base 1.9.2.0 rb_mod_name@Base 1.9.2.0 rb_mod_remove_const@Base 1.9.2.0 rb_mod_remove_cvar@Base 1.9.2.0 rb_mod_sys_fail@Base 1.9.2.0 rb_mod_sys_fail_str@Base 1.9.3.194 rb_mod_syserr_fail@Base 1.9.3~rc1 rb_mod_syserr_fail_str@Base 1.9.3.194 rb_module_new@Base 1.9.2.0 rb_mutex_lock@Base 1.9.2.0 rb_mutex_locked_p@Base 1.9.2.0 rb_mutex_new@Base 1.9.2.0 rb_mutex_sleep@Base 1.9.2.0 rb_mutex_synchronize@Base 1.9.2.0 rb_mutex_trylock@Base 1.9.2.0 rb_mutex_unlock@Base 1.9.2.0 rb_name_class@Base 1.9.2.0 rb_name_error@Base 1.9.2.0 rb_nan@Base 1.9.2.0 rb_need_block@Base 1.9.2.0 rb_newobj@Base 1.9.2.0 rb_node_newnode@Base 1.9.2.0 rb_notimplement@Base 1.9.2.0 rb_num2dbl@Base 1.9.2.0 rb_num2fix@Base 1.9.2.0 (arch=amd64)rb_num2int@Base 1.9.2.0 rb_num2ll@Base 1.9.2.0 rb_num2long@Base 1.9.2.0 (arch=amd64)rb_num2uint@Base 1.9.2.0 rb_num2ull@Base 1.9.2.0 rb_num2ulong@Base 1.9.2.0 rb_num_coerce_bin@Base 1.9.2.0 rb_num_coerce_cmp@Base 1.9.2.0 rb_num_coerce_relop@Base 1.9.2.0 rb_num_zerodiv@Base 1.9.2.0 rb_obj_alloc@Base 1.9.2.0 rb_obj_as_string@Base 1.9.2.0 rb_obj_call_init@Base 1.9.2.0 rb_obj_class@Base 1.9.2.0 rb_obj_classname@Base 1.9.2.0 rb_obj_clone@Base 1.9.2.0 rb_obj_dup@Base 1.9.2.0 rb_obj_encoding@Base 1.9.2.0 rb_obj_freeze@Base 1.9.2.0 rb_obj_frozen_p@Base 1.9.2.0 rb_obj_id@Base 1.9.2.0 rb_obj_infect@Base 1.9.2.0 rb_obj_init_copy@Base 1.9.2.0 rb_obj_instance_eval@Base 1.9.2.0 rb_obj_instance_exec@Base 1.9.2.0 rb_obj_instance_variables@Base 1.9.2.0 rb_obj_is_instance_of@Base 1.9.2.0 rb_obj_is_kind_of@Base 1.9.2.0 rb_obj_is_method@Base 1.9.3~rc1 rb_obj_is_proc@Base 1.9.2.0 rb_obj_method@Base 1.9.2.0 rb_obj_method_arity@Base 1.9.2.0 rb_obj_remove_instance_variable@Base 1.9.2.0 rb_obj_respond_to@Base 1.9.2.0 rb_obj_singleton_methods@Base 1.9.2.0 rb_obj_taint@Base 1.9.2.0 rb_obj_tainted@Base 1.9.2.0 rb_obj_trust@Base 1.9.2.0 rb_obj_untaint@Base 1.9.2.0 rb_obj_untrust@Base 1.9.2.0 rb_obj_untrusted@Base 1.9.2.0 rb_objspace_data_type_memsize@Base 1.9.2.0 rb_objspace_data_type_name@Base 1.9.2.0 rb_objspace_each_objects@Base 1.9.2.0 (arch=amd64)rb_out_of_int@Base 1.9.2.0 rb_output_fs@Base 1.9.2.0 rb_output_rs@Base 1.9.2.0 rb_p@Base 1.9.2.0 rb_parser_append_print@Base 1.9.2.0 rb_parser_calloc@Base 1.9.2.0 rb_parser_compile_cstr@Base 1.9.2.0 rb_parser_compile_file@Base 1.9.2.0 rb_parser_compile_string@Base 1.9.2.0 rb_parser_dump_tree@Base 1.9.2.0 rb_parser_encoding@Base 1.9.2.0 rb_parser_end_seen_p@Base 1.9.2.0 rb_parser_free@Base 1.9.2.0 rb_parser_get_yydebug@Base 1.9.2.0 rb_parser_malloc@Base 1.9.2.0 rb_parser_new@Base 1.9.2.0 rb_parser_realloc@Base 1.9.2.0 rb_parser_set_yydebug@Base 1.9.2.0 rb_parser_while_loop@Base 1.9.2.0 rb_path2class@Base 1.9.2.0 rb_path_check@Base 1.9.2.0 rb_path_to_class@Base 1.9.2.0 rb_pipe@Base 1.9.2.0 rb_proc_arity@Base 1.9.2.0 rb_proc_call@Base 1.9.2.0 rb_proc_call_with_block@Base 1.9.2.0 rb_proc_exec@Base 1.9.2.0 rb_proc_exec_n@Base 1.9.2.0 rb_proc_get_iseq@Base 1.9.2.0 rb_proc_lambda_p@Base 1.9.2.0 rb_proc_new@Base 1.9.2.0 rb_proc_times@Base 1.9.2.0 rb_protect@Base 1.9.2.0 rb_provide@Base 1.9.2.0 rb_provided@Base 1.9.2.0 rb_quad_pack@Base 1.9.2.0 rb_quad_unpack@Base 1.9.2.0 rb_raise@Base 1.9.2.0 rb_random_bytes@Base 1.9.2.0 rb_random_int32@Base 1.9.2.0 rb_random_real@Base 1.9.2.0 rb_range_beg_len@Base 1.9.2.0 rb_range_new@Base 1.9.2.0 rb_range_values@Base 1.9.2.0 rb_rational_new@Base 1.9.2.0 rb_rational_raw@Base 1.9.2.0 rb_read_check@Base 1.9.2.0 rb_reg_adjust_startpos@Base 1.9.2.0 rb_reg_alloc@Base 1.9.2.0 rb_reg_backref_number@Base 1.9.2.0 rb_reg_init_str@Base 1.9.2.0 rb_reg_last_match@Base 1.9.2.0 rb_reg_match2@Base 1.9.2.0 rb_reg_match@Base 1.9.2.0 rb_reg_match_last@Base 1.9.2.0 rb_reg_match_post@Base 1.9.2.0 rb_reg_match_pre@Base 1.9.2.0 rb_reg_new@Base 1.9.2.0 rb_reg_new_str@Base 1.9.2.0 rb_reg_nth_defined@Base 1.9.2.0 rb_reg_nth_match@Base 1.9.2.0 rb_reg_options@Base 1.9.2.0 rb_reg_prepare_re@Base 1.9.2.0 rb_reg_quote@Base 1.9.2.0 rb_reg_regcomp@Base 1.9.2.0 rb_reg_regsub@Base 1.9.2.0 rb_reg_search@Base 1.9.2.0 rb_register_transcoder@Base 1.9.2.0 rb_remove_event_hook@Base 1.9.2.0 rb_remove_method@Base 1.9.2.0 rb_remove_method_id@Base 1.9.2.0 rb_require@Base 1.9.2.0 rb_require_safe@Base 1.9.2.0 rb_rescue2@Base 1.9.2.0 rb_rescue@Base 1.9.2.0 rb_reserved_fd_p@Base 1.9.3~rc1 rb_reserved_word@Base 1.9.2.0 rb_reset_coverages@Base 1.9.2.0 rb_reset_random_seed@Base 1.9.2.0 rb_respond_to@Base 1.9.2.0 rb_rs@Base 1.9.2.0 rb_ruby_debug_ptr@Base 1.9.2.0 rb_ruby_verbose_ptr@Base 1.9.2.0 rb_run_exec_options@Base 1.9.2.0 rb_run_exec_options_err@Base 1.9.2.0 rb_safe_level@Base 1.9.2.0 rb_scan_args@Base 1.9.2.0 rb_secure@Base 1.9.2.0 rb_secure_update@Base 1.9.2.0 rb_set_class_path@Base 1.9.2.0 rb_set_class_path_string@Base 1.9.2.0 rb_set_coverages@Base 1.9.2.0 rb_set_end_proc@Base 1.9.2.0 rb_set_errinfo@Base 1.9.2.0 rb_set_safe_level@Base 1.9.2.0 rb_set_safe_level_force@Base 1.9.2.0 rb_singleton_class@Base 1.9.2.0 rb_singleton_class_attached@Base 1.9.2.0 rb_singleton_class_clone@Base 1.9.2.0 rb_sourcefile@Base 1.9.2.0 rb_sourceline@Base 1.9.2.0 rb_spawn@Base 1.9.2.0 rb_spawn_err@Base 1.9.2.0 rb_sprintf@Base 1.9.2.0 rb_stderr@Base 1.9.2.0 rb_stdin@Base 1.9.2.0 rb_stdout@Base 1.9.2.0 rb_str2inum@Base 1.9.2.0 rb_str_append@Base 1.9.2.0 rb_str_associate@Base 1.9.2.0 rb_str_associated@Base 1.9.2.0 rb_str_buf_append@Base 1.9.2.0 rb_str_buf_cat2@Base 1.9.2.0 rb_str_buf_cat@Base 1.9.2.0 rb_str_buf_cat_ascii@Base 1.9.2.0 rb_str_buf_new2@Base 1.9.2.0 rb_str_buf_new@Base 1.9.2.0 rb_str_buf_new_cstr@Base 1.9.2.0 rb_str_capacity@Base 1.9.2.0 rb_str_cat2@Base 1.9.2.0 rb_str_cat@Base 1.9.2.0 rb_str_catf@Base 1.9.2.0 rb_str_cmp@Base 1.9.2.0 rb_str_coderange_scan_restartable@Base 1.9.2.0 rb_str_comparable@Base 1.9.2.0 rb_str_concat@Base 1.9.2.0 rb_str_conv_enc@Base 1.9.2.0 rb_str_conv_enc_opts@Base 1.9.2.0 rb_str_drop_bytes@Base 1.9.2.0 rb_str_dump@Base 1.9.2.0 rb_str_dup@Base 1.9.2.0 rb_str_dup_frozen@Base 1.9.2.0 rb_str_ellipsize@Base 1.9.3~rc1 rb_str_encode@Base 1.9.2.0 rb_str_encode_ospath@Base 1.9.2.0 rb_str_equal@Base 1.9.2.0 rb_str_export@Base 1.9.2.0 rb_str_export_locale@Base 1.9.2.0 rb_str_export_to_enc@Base 1.9.2.0 rb_str_format@Base 1.9.2.0 rb_str_free@Base 1.9.2.0 rb_str_freeze@Base 1.9.2.0 rb_str_hash@Base 1.9.2.0 rb_str_hash_cmp@Base 1.9.2.0 rb_str_inspect@Base 1.9.2.0 rb_str_intern@Base 1.9.2.0 rb_str_length@Base 1.9.2.0 rb_str_locktmp@Base 1.9.2.0 rb_str_memsize@Base 1.9.2.0 rb_str_modify@Base 1.9.2.0 rb_str_modify_expand@Base 1.9.3.125 rb_str_new2@Base 1.9.2.0 rb_str_new3@Base 1.9.2.0 rb_str_new4@Base 1.9.2.0 rb_str_new5@Base 1.9.2.0 rb_str_new@Base 1.9.2.0 rb_str_new_cstr@Base 1.9.2.0 rb_str_new_frozen@Base 1.9.2.0 rb_str_new_shared@Base 1.9.2.0 rb_str_new_with_class@Base 1.9.2.0 rb_str_offset@Base 1.9.2.0 rb_str_plus@Base 1.9.2.0 rb_str_replace@Base 1.9.2.0 rb_str_resize@Base 1.9.2.0 rb_str_resurrect@Base 1.9.2.0 rb_str_set_len@Base 1.9.2.0 rb_str_setter@Base 1.9.2.0 rb_str_shared_replace@Base 1.9.2.0 rb_str_split@Base 1.9.2.0 rb_str_strlen@Base 1.9.2.0 rb_str_sublen@Base 1.9.2.0 rb_str_subseq@Base 1.9.2.0 rb_str_substr@Base 1.9.2.0 rb_str_succ@Base 1.9.2.0 rb_str_times@Base 1.9.2.0 rb_str_tmp_new@Base 1.9.2.0 rb_str_to_dbl@Base 1.9.2.0 rb_str_to_inum@Base 1.9.2.0 rb_str_to_str@Base 1.9.2.0 rb_str_unlocktmp@Base 1.9.2.0 rb_str_update@Base 1.9.2.0 rb_str_vcatf@Base 1.9.2.0 rb_string_value@Base 1.9.2.0 rb_string_value_cstr@Base 1.9.2.0 rb_string_value_ptr@Base 1.9.2.0 rb_struct_alloc@Base 1.9.2.0 rb_struct_alloc_noinit@Base 1.9.2.0 rb_struct_aref@Base 1.9.2.0 rb_struct_aset@Base 1.9.2.0 rb_struct_define@Base 1.9.2.0 rb_struct_define_without_accessor@Base 1.9.2.0 rb_struct_getmember@Base 1.9.2.0 rb_struct_initialize@Base 1.9.2.0 rb_struct_iv_get@Base 1.9.2.0 rb_struct_members@Base 1.9.2.0 rb_struct_new@Base 1.9.2.0 rb_struct_s_members@Base 1.9.2.0 rb_sym_all_symbols@Base 1.9.2.0 rb_sym_to_s@Base 1.9.2.0 rb_symname_p@Base 1.9.2.0 rb_sys_fail@Base 1.9.2.0 rb_sys_fail_str@Base 1.9.3.194 rb_sys_warning@Base 1.9.2.0 rb_syserr_fail@Base 1.9.3~rc1 rb_syserr_fail_str@Base 1.9.3.194 rb_syserr_new@Base 1.9.3~rc1 rb_syserr_new_str@Base 1.9.3.194 rb_syswait@Base 1.9.2.0 rb_tainted_str_new2@Base 1.9.2.0 rb_tainted_str_new@Base 1.9.2.0 rb_tainted_str_new_cstr@Base 1.9.2.0 rb_thread_alone@Base 1.9.2.0 rb_thread_atfork@Base 1.9.2.0 rb_thread_atfork_before_exec@Base 1.9.2.0 rb_thread_blocking_region@Base 1.9.2.0 rb_thread_call_with_gvl@Base 1.9.2.0 rb_thread_call_without_gvl@Base 1.9.2.0 rb_thread_check_ints@Base 1.9.2.0 rb_thread_check_trap_pending@Base 1.9.2.0 rb_thread_create@Base 1.9.2.0 rb_thread_current@Base 1.9.2.0 rb_thread_fd_close@Base 1.9.2.0 rb_thread_fd_select@Base 1.9.2.0 rb_thread_fd_writable@Base 1.9.2.0 rb_thread_interrupted@Base 1.9.2.0 rb_thread_io_blocking_region@Base 1.9.3~rc1 rb_thread_kill@Base 1.9.2.0 rb_thread_local_aref@Base 1.9.2.0 rb_thread_local_aset@Base 1.9.2.0 rb_thread_main@Base 1.9.2.0 rb_thread_polling@Base 1.9.2.0 rb_thread_run@Base 1.9.2.0 rb_thread_schedule@Base 1.9.2.0 rb_thread_select@Base 1.9.2.0 rb_thread_sleep@Base 1.9.2.0 rb_thread_sleep_forever@Base 1.9.2.0 rb_thread_stop@Base 1.9.2.0 rb_thread_wait_fd@Base 1.9.2.0 rb_thread_wait_for@Base 1.9.2.0 rb_thread_wakeup@Base 1.9.2.0 rb_thread_wakeup_alive@Base 1.9.3~rc1 rb_throw@Base 1.9.2.0 rb_throw_obj@Base 1.9.2.0 rb_time_interval@Base 1.9.2.0 rb_time_nano_new@Base 1.9.2.0 rb_time_new@Base 1.9.2.0 rb_time_num_new@Base 1.9.2.0 rb_time_succ@Base 1.9.2.0 rb_time_timespec@Base 1.9.2.0 rb_time_timeval@Base 1.9.2.0 rb_to_encoding@Base 1.9.2.0 rb_to_encoding_index@Base 1.9.2.0 rb_to_float@Base 1.9.2.0 rb_to_id@Base 1.9.2.0 rb_to_int@Base 1.9.2.0 rb_tolower@Base 1.9.2.0 rb_toupper@Base 1.9.2.0 rb_trap_exit@Base 1.9.2.0 rb_typeddata_inherited_p@Base 1.9.3~rc1 rb_typeddata_is_kind_of@Base 1.9.2.0 rb_uint2big@Base 1.9.2.0 rb_uint2inum@Base 1.9.2.0 rb_ull2inum@Base 1.9.2.0 rb_undef@Base 1.9.2.0 rb_undef_alloc_func@Base 1.9.2.0 rb_undef_method@Base 1.9.2.0 rb_update_max_fd@Base 1.9.3~rc1 rb_usascii_encindex@Base 1.9.2.0 rb_usascii_encoding@Base 1.9.2.0 rb_usascii_str_new2@Base 1.9.2.0 rb_usascii_str_new@Base 1.9.2.0 rb_usascii_str_new_cstr@Base 1.9.2.0 rb_utf8_encindex@Base 1.9.2.0 rb_utf8_encoding@Base 1.9.2.0 rb_uv_to_utf8@Base 1.9.2.0 rb_vm_get_sourceline@Base 1.9.2.0 rb_vm_make_env_object@Base 1.9.2.0 rb_vsprintf@Base 1.9.2.0 rb_wait_for_single_fd@Base 1.9.3~rc1 rb_waitpid@Base 1.9.2.0 rb_warn@Base 1.9.2.0 rb_warning@Base 1.9.2.0 rb_write_error2@Base 1.9.2.0 rb_write_error@Base 1.9.2.0 rb_yield@Base 1.9.2.0 rb_yield_splat@Base 1.9.2.0 rb_yield_values2@Base 1.9.2.0 rb_yield_values@Base 1.9.2.0 ruby_Init_Continuation_body@Base 1.9.2.0 ruby_Init_Fiber_as_Coroutine@Base 1.9.2.0 ruby_api_version@Base 1.9.3~rc1 ruby_brace_glob@Base 1.9.2.0 ruby_cleanup@Base 1.9.2.0 ruby_copyright@Base 1.9.2.0 ruby_debug_breakpoint@Base 1.9.2.0 ruby_debug_print_id@Base 1.9.2.0 ruby_debug_print_indent@Base 1.9.2.0 ruby_debug_print_node@Base 1.9.2.0 ruby_debug_print_value@Base 1.9.2.0 ruby_default_signal@Base 1.9.2.0 ruby_description@Base 1.9.2.0 ruby_each_words@Base 1.9.2.0 ruby_enc_find_basename@Base 1.9.3.327 ruby_enc_find_extname@Base 1.9.3.327 ruby_engine@Base 1.9.2.0 ruby_exec_node@Base 1.9.2.0 ruby_executable_node@Base 1.9.2.0 ruby_finalize@Base 1.9.2.0 ruby_getcwd@Base 1.9.2.0 ruby_glob@Base 1.9.2.0 ruby_incpush@Base 1.9.2.0 ruby_init@Base 1.9.2.0 ruby_init_ext@Base 1.9.2.0 ruby_init_loadpath@Base 1.9.2.0 ruby_init_stack@Base 1.9.2.0 ruby_native_thread_p@Base 1.9.2.0 ruby_node_name@Base 1.9.2.0 ruby_options@Base 1.9.2.0 ruby_patchlevel@Base 1.9.2.0 ruby_platform@Base 1.9.2.0 ruby_posix_signal@Base 1.9.2.0 ruby_process_options@Base 1.9.2.0 ruby_prog_init@Base 1.9.2.0 ruby_qsort@Base 1.9.2.0 ruby_release_date@Base 1.9.2.0 ruby_run_node@Base 1.9.2.0 ruby_scan_hex@Base 1.9.2.0 ruby_scan_oct@Base 1.9.2.0 ruby_script@Base 1.9.2.0 ruby_set_argv@Base 1.9.2.0 ruby_set_debug_option@Base 1.9.3~rc1 ruby_setenv@Base 1.9.2.0 ruby_show_copyright@Base 1.9.2.0 ruby_show_version@Base 1.9.2.0 ruby_sig_finalize@Base 1.9.2.0 ruby_signal_name@Base 1.9.2.0 ruby_snprintf@Base 1.9.2.0 ruby_stack_check@Base 1.9.2.0 ruby_stack_length@Base 1.9.2.0 ruby_stop@Base 1.9.2.0 ruby_strdup@Base 1.9.2.0 ruby_strtod@Base 1.9.2.0 ruby_strtoul@Base 1.9.2.0 ruby_sysinit@Base 1.9.2.0 ruby_unsetenv@Base 1.9.2.0 ruby_version@Base 1.9.2.0 ruby_vm_at_exit@Base 1.9.3~rc1 ruby_vm_destruct@Base 1.9.2.0 ruby_vsnprintf@Base 1.9.2.0 ruby_xcalloc@Base 1.9.2.0 ruby_xfree@Base 1.9.2.0 ruby_xmalloc2@Base 1.9.2.0 ruby_xmalloc@Base 1.9.2.0 ruby_xrealloc2@Base 1.9.2.0 ruby_xrealloc@Base 1.9.2.0 setproctitle@Base 1.9.3~rc1 st_add_direct@Base 1.9.2.0 st_cleanup_safe@Base 1.9.2.0 st_clear@Base 1.9.2.0 st_copy@Base 1.9.2.0 st_delete@Base 1.9.2.0 st_delete_safe@Base 1.9.2.0 st_foreach@Base 1.9.2.0 st_foreach_safe@Base 1.9.2.0 st_free_table@Base 1.9.2.0 st_get_key@Base 1.9.2.0 st_hash@Base 1.9.2.0 st_hash_end@Base 1.9.2.0 st_hash_start@Base 1.9.2.0 st_hash_uint32@Base 1.9.2.0 st_hash_uint@Base 1.9.2.0 st_init_numtable@Base 1.9.2.0 st_init_numtable_with_size@Base 1.9.2.0 st_init_strcasetable@Base 1.9.2.0 st_init_strcasetable_with_size@Base 1.9.2.0 st_init_strtable@Base 1.9.2.0 st_init_strtable_with_size@Base 1.9.2.0 st_init_table@Base 1.9.2.0 st_init_table_with_size@Base 1.9.2.0 st_insert2@Base 1.9.2.0 st_insert@Base 1.9.2.0 st_lookup@Base 1.9.2.0 st_memsize@Base 1.9.2.0 st_numcmp@Base 1.9.2.0 st_numhash@Base 1.9.2.0 st_shift@Base 1.9.3.448 st_strcasecmp@Base 1.9.2.0 st_strncasecmp@Base 1.9.2.0 strlcat@Base 1.9.2.0 strlcpy@Base 1.9.2.0 debian/manpages/0000775000000000000000000000000012247132722010765 5ustar debian/manpages/irb1.9.1.10000664000000000000000000002526712247132667012236 0ustar .TH IRB1.9 "1" "December 2002" .SH NAME irb1.9.1 \- interactive ruby .SH SYNOPSIS .B irb [\fIoptions\fR] .SH DESCRIPTION .PP irb stands for `interactive ruby'. irb is a tool to execute interactively ruby expressions read from stdin. Use of irb is easy if you know ruby. Executing irb, prompts are displayed as follows. Then, enter expression of ruby. A input is executed when it is syntacticaly completed. .nf \& $ irb1.9.1 \& irb(main):001:0> 1+2 \& 3 \& irb(main):002:0> class Foo \& irb(main):003:1> def foo \& irb(main):004:2> print 1 \& irb(main):005:2> end \& irb(main):006:1> end \& nil \& irb(main):007:0> .fi And, Readline extesion module can be used with irb. Using Readline is the standard default action if Readline is installed. .SH OPTIONS .PP .TP .fi .B \-f suppress read ~/.irbrc .TP .fi .B \-m bc mode (fraction or matrix are available) .TP .fi .B \-d set $DEBUG to true (same as `ruby \-d') .TP .fi .B \-r load\-module same as `ruby \-r' .TP .fi .B \-\-inspect uses `inspect' for output (the default except bc mode) .TP .fi .B \-\-noinspect doesn't uses inspect for output .TP .fi .B \-\-readline uses Readline extension module .TP .fi .B \-\-noreadline doesn't use Readline extension module .TP .fi .B \-\-prompt prompt\-mode .TP .fi .B \-\-prompt\-mode prompt\-mode switches prompt mode. Pre\-defined prompt modes are `default', `simple', `xmp' and `inf\-ruby' .TP .fi .B \-\-inf\-ruby\-mode uses prompt appreciate for inf\-ruby\-mode on emacs. Suppresses \-\-readline. .TP .fi .B \-\-simple\-prompt simple prompt mode .TP .fi .B \-\-noprompt no prompt .TP .fi .B \-\-tracer display trace for each execution of commands. .TP .fi .B \-\-back\-trace\-limit n displayes backtrace top n and tail n. The default value is 16. .TP .fi .B \-\-irb_debug n sets internal debug level to n (It shouldn't be used) .TP .fi .B \-v, \-\-version prints the version of irb .SH CONFIGURATIONS .PP irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'. The following is altanative to the command line option. To use them type as follows in an irb session. .nf \& IRB.conf[:IRB_NAME]="irb" \& IRB.conf[:MATH_MODE]=false \& IRB.conf[:USE_TRACER]=false \& IRB.conf[:USE_LOADER]=false \& IRB.conf[:IGNORE_SIGINT]=true \& IRB.conf[:IGNORE_EOF]=false \& IRB.conf[:INSPECT_MODE]=nil \& IRB.conf[:IRB_RC] = nil \& IRB.conf[:BACK_TRACE_LIMIT]=16 \& IRB.conf[:USE_LOADER] = false \& IRB.conf[:USE_READLINE] = nil \& IRB.conf[:USE_TRACER] = false \& IRB.conf[:IGNORE_SIGINT] = true \& IRB.conf[:IGNORE_EOF] = false \& IRB.conf[:PROMPT_MODE] = :DEFALUT \& IRB.conf[:PROMPT] = {...} \& IRB.conf[:DEBUG_LEVEL]=0 \& IRB.conf[:VERBOSE]=true .fi .SH Customizing prompt .PP To costomize the prompt you set a variable .nf \& IRB.conf[:PROMPT] .fi For example, describe as follows in `.irbrc'. .nf \& IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode \& :PROMPT_I => nil, # normal prompt \& :PROMPT_S => nil, # prompt for continuated strings \& :PROMPT_C => nil, # prompt for continuated statement \& :RETURN => " ==>%s\\n" # format to return value \& } .fi Then, invoke irb with the above prompt mode by .nf \& $ irb1.9.1 \-\-prompt my\-prompt .fi Or add the following in `.irbrc'. .nf \& IRB.conf[:PROMPT_MODE] = :MY_PROMPT .fi Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format. In the prompt specification, some special strings are available. .nf \& %N command name which is running \& %m to_s of main object (self) \& %M inspect of main object (self) \& %l type of string(", ', /, ]), `]' is inner %w[...] \& %NNi indent level. NN is degits and means as same as printf("%NNd"). \& It can be ommited \& %NNn line number. \& %% % .fi For instance, the default prompt mode is defined as follows: IRB.conf[:PROMPT_MODE][:DEFAULT] = { .TP .fi .B PROMPT_I => "%N(%m):%03n:%i> ", .TP .fi .B PROMPT_S => "%N(%m):%03n:%i%l ", .TP .fi .B PROMPT_C => "%N(%m):%03n:%i* ", .TP .fi .B RETURN => "%s\\n"} RETURN is used to printf. .SH Configurating subirb .PP The command line option or IRB.conf specify the default behavior of (sub)irb. On the other hand, each conf of in the next sction `6. Command' is used to individually configurate (sub)irb. If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after execution of that proc under giving the context of irb as its aregument. By this mechanism each subirb can be configurated. .SH Command .PP For irb commands, both simple name and `irb_'\-prefixed name are prepared. .TP .fi .B exit, quit, irb_exit Quits (sub)irb. if you've done cb (see below), exit from the binding mode. .TP .fi .B conf, irb_context Displays current configuration. Modifing the configuration is achieved by sending message to `conf'. .TP .fi .B conf.back_trace_limit Sets display lines of backtrace as top n and tail n. The default value is 16. .TP .fi .B conf.debug_level = N Sets debug level of irb. .TP .fi .B conf.ignore_eof = true/false Whether ^D (control\-d) will be ignored or not. If false is set, ^D means quit. .TP .fi .B conf.ignore_sigint= true/false Whether ^C (control\-c) will be ignored or not. If false is set, ^D means quit. If true, .nf \& during input: cancel inputing then return to top level. \& during execute: abondon current execution. .fi .TP .fi .B conf.inf_ruby_mode = true/false Whether inf\-ruby\-mode or not. The default value is false. .TP .fi .B conf.inspect_mode = true/false/nil Specifies inspect mode. true: display inspect false: display to_s nil: inspect mode in non math mode, .nf \& non inspect mode in math mode. .fi .TP .fi .B conf.irb_level The level of cb. .TP .fi .B conf.math_mode Whether bc mode or not. .TP .fi .B conf.use_loader = true/false Whether irb's own file reader method is used when load/require or not. This mode is globaly affected (irb wide). .TP .fi .B conf.prompt_c prompt for a continuating statement (e.g, immediately after of `if') .TP .fi .B conf.prompt_i standard prompt .TP .fi .B conf.prompt_s prompt for a continuating string .TP .fi .B conf.rc Whether ~/.irbrc is read or not. .TP .fi .B conf.use_prompt = true/false Prompting or not. .TP .fi .B conf.use_readline = true/false/nil Whether readline is used or not. true: uses false: doen't use nil: intends to use readline except for inf\-reuby\-mode (default) .TP .fi .B conf.verbose=T/F Whether verbose messages are display or not. .TP .fi .B cb, irb_change_binding [obj] Enter new binding which has a distinct scope of local variables. If obj is given, obj will be self. .TP .fi .B irb [obj] Invoke subirb. If obj is given, obj will be self. .TP .fi .B jobs, irb_jobs List of subirb .TP .fi .B fg n, irb_fg n Switch into specified subirb. The following is candidates of n: .nf \& irb number \& thhread \& irb object \& self(obj which is specified of irb obj) .fi .TP .fi .B kill n, irb_kill n Kill subirb. The means of n is as same as the case of irb_fg. .SH System variable .PP .TP .fi .B _ The latest value of evaluation (it is local) .SH Session Example .PP .nf \& $ irb1.9.1 \& irb(main):001:0> irb # invoke subirb \& irb#1(main):001:0> jobs # list of subirbs \& #0\->irb on main (# : stop) \& #1\->irb#1 on main (# : running) \& nil \& irb#1(main):002:0> fg 0 # switch job \& nil \& irb(main):002:0> class Foo;end \& nil \& irb(main):003:0> irb Foo # invoke subirb which has the .fi .nf \& # context of Foo .fi .nf \& irb#2(Foo):001:0> def foo # define Foo#foo \& irb#2(Foo):002:1> print 1 \& irb#2(Foo):003:1> end \& nil \& irb#2(Foo):004:0> fg 0 # switch job \& nil \& irb(main):004:0> jobs # list of job \& #0\->irb on main (# : running) \& #1\->irb#1 on main (# : stop) \& #2\->irb#2 on Foo (# : stop) \& nil \& irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely \& ["foo"] \& irb(main):006:0> fg 2 # switch job \& nil \& irb#2(Foo):005:0> def bar # define Foo#bar \& irb#2(Foo):006:1> print "bar" \& irb#2(Foo):007:1> end \& nil \& irb#2(Foo):010:0> Foo.instance_methods \& ["bar", "foo"] \& irb#2(Foo):011:0> fg 0 \& nil \& irb(main):007:0> f = Foo.new \& # \& irb(main):008:0> irb f # invoke subirb which has the .fi .nf \& # context of f (instance of Foo) .fi .nf \& irb#3(#):001:0> jobs \& #0\->irb on main (# : stop) \& #1\->irb#1 on main (# : stop) \& #2\->irb#2 on Foo (# : stop) \& #3\->irb#3 on # (# : running) \& nil \& irb#3(#):002:0> foo # evaluate f.foo \& 1nil \& irb#3(#):003:0> bar # evaluate f.bar \& barnil \& irb#3(#):004:0> kill 1, 2, 3# kill job \& nil \& irb(main):009:0> jobs \& #0\->irb on main (# : running) \& nil \& irb(main):010:0> exit # exit .fi .SH Restrictions .PP Because irb evaluates the inputs immediately after the imput is syntactically completed, irb gives slight different result than directly use ruby. Known difference is pointed out here. .SH Declaration of the local variable .PP The following causes an error in ruby: .nf \& eval "foo = 0" \& foo \& \-\- \& \-:2: undefined local variable or method `foo' for # (NameError) \& \-\-\- \& NameError .fi Though, the above will successfully done by irb. .nf \& >> eval "foo = 0" .fi .nf \& => 0 \& >> foo \& => 0 .fi Ruby evaluates a code after reading entire of code and determination of the scope of local variables. On the other hand, irb do immediately. More precisely, irb evaluate at first .nf \& evel "foo = 0" .fi then foo is defined on this timing. It is because of this incompatibility. If you'd like to detect those differences, begin...end can be used: .nf \& >> begin \& ?> eval "foo = 0" \& >> foo \& >> end \& NameError: undefined local variable or method `foo' for # \& (irb):3 \& (irb_local_binding):1:in `eval' .fi .SH Here\-document .PP Implementation of Here\-document is incomplete. .SH Symbol .PP Irb can not always recognize a symbol as to be Symbol. Concretely, an expression have completed, however Irb regard it as continuation line. debian/manpages/testrb1.9.1.10000664000000000000000000000230212247132667012746 0ustar .\" DO NOT MODIFY THIS FILE! it was generated by rd2 .TH testrb1.9.1 1 "December 2003" .SH NAME .PP testrb1.9.1 \- Automatic runnter for Test::Unit of Ruby .SH SYNOPSIS .PP testrb1.9.1 [options] [\-\- untouched arguments] test ... .SH DESCRIPTION .PP testrb1.9.1 loads and runs unit\-tests. If test is directory name, testrb1.9.1 testrb1.9.1 traverses the directory. .SH OPTIONS .TP .fi .B \-r, \-\-runner=RUNNER Use the given RUNNER. (t[k], c[onsole], g[tk], f[ox]) .TP .fi .B \-a, \-\-add=TORUN Add TORUN to the list of things to run; can be a file or a directory. .TP .fi .B \-p, \-\-pattern=PATTERN Match files to collect against PATTERN. (default pattern is /\\Atest_.*\\.rb\\Z/.) .TP .fi .B \-n, \-\-name=NAME Runs tests matching NAME. (patterns may be used.) .TP .fi .B \-t, \-\-testcase=TESTCASE Runs tests in TestCases matching TESTCASE. (patterns may be used.) .TP .fi .B \-v, \-\-verbose=[LEVEL] Set the output level (default is verbose). (p[rogress], n[ormal], v[erbose], s[ilent]) .TP .fi .B \-\- Stop processing options so that the remaining options will be passed to the test. .TP .fi .B \-h, \-\-help Display help. .SH AUTHOR .PP This manpage was contributed by akira yamada debian/manpages/gem1.9.1.10000664000000000000000000000145412247132667012222 0ustar .TH GEM1.9.1 "1" "Dec 2007" "gem1.9.1 1.0.0" "User Commands" .SH NAME gem1.9.1 \- the front end to RubyGems .SH SYNOPSIS .IP gem1.9.1 command [arguments...] [options...] .IP gem1.9.1 \fB\-h\fR | \-\-help .IP gem1.9.1 \fB\-v\fR | \-\-version .fi .SH DESCRIPTION .B gem1.9.1 is the front end to RubyGems, a sophisticated package manager for Ruby. This is a basic help message containing pointers to more information. .PP Further help: .TP gem1.9.1 help commands list all 'gem1.9.1' commands .TP gem1.9.1 help examples show some examples of usage .TP gem1.9.1 help show help on COMMAND .IP (e.g. 'gem1.9.1 help install') .IP .PP Further information: .IP http://rubygems.org/ .SH EXAMPLES .IP .nf gem1.9.1 install rake gem1.9.1 list \fB\-\-local\fR gem1.9.1 build package.gemspec gem1.9.1 help install .fi debian/manpages/erb1.9.1.10000664000000000000000000000207512247132667012222 0ustar .TH ERB1.9 1 "April 2003" .SH NAME .PP erb \- an embedded Ruby language interpreter .SH SYNOPSIS .PP erb1.9.1 [switches] [inputfile] .SH DESCRIPTION .PP erb interprets a Ruby code embedded text file. For example, erb enables you to embed a Ruby code to a HTML file. A Ruby block starts with `<%' and ends with `%>'. erb replaces the block with its output. If `<%' is followed by `=', eRuby replaces the block with a value of the block. If `<%' is followed by `#', the block is ignored as a comment. .SH OPTIONS .PP .TP .fi .B \-x print ruby script .TP .fi .B \-n print ruby script with line number .TP .fi .B \-v enables verbose mode .TP .fi .B \-d set debugging flags (set $DEBUG to true) .TP .fi .B \-r library load a library .TP .fi .B \-K kcode specifies KANJI code\-set (euc or sjis) or UTF\-8 (utf8) .TP .fi .B \-S safe_level set $SAFE (0..4) .TP .fi .B \-T trim_mode specify trim_mode (0..2) .TP .fi .B \-P disregard the lin which starts in "%" .SH SEE ALSO .PP eruby(1) .SH AUTHOR .PP This document stands on eruby(1) which is written by Shugo Maeda . debian/manpages/ri1.9.1.10000664000000000000000000000343012247132667012060 0ustar .\" DO NOT MODIFY THIS FILE! it was generated by rd2 .TH ri1.9.1 "April 2005" .SH NAME .PP ri1.9.1 \- Ruby Information at your fingertips .SH SYNOPSIS .PP ri1.9.1 [options] [names...] .SH DESCRIPTION .PP \fIri1.9.1\fP displaies information on Ruby classes, modules, and methods. You can give the names of classes or methods to see their documentation. Partial names may be given: if the names match more than one entity, a list will be shown, otherwise details on that entity will be displayed. .PP Nested classes and modules can be specified using the normal Name::Name notation, and instance methods can be distinguished from class methods using "." (or "#") instead of "::". .PP For example: .nf \& ri1.9.1 File \& ri1.9.1 File.new \& ri1.9.1 F.n \& ri1.9.1 zip .fi .PP Note that shell quoting may be required for method names containing punctuation: .nf \& ri1.9.1 'Array.[]' \& ri1.9.1 compact\\! .fi .SH OPTIONS .TP .fi .B \-\-classes, \-c Display the names of classes and modules we know about. .TP .fi .B \-\-doc\-dir, \-d dirname A directory to search for documentation. If not specified, we search the standard rdoc/ri directories. .TP .fi .B \-\-format, \-f name Format to use when displaying output: ansi, bs, html, plain, simple. Use \'bs' (backspace) with most pager programs. To use ANSI, either also use the \-T option, or tell your pager to allow control characters. (for example using the \-R option to less.) .TP .fi .B \-\-list\-names, \-l List all the names known to RDoc, one per line. .TP .fi .B \-\-no\-pager, \-T Send output directly to stdout. .TP .fi .B \-\-width, \-w width Set the width of the output. .TP .fi .B \-\-version, \-v Display the version of ri1.9.1. .TP .fi .B \-\-help, \-h Display help. .PP Options may also be passed in the 'RI' environment variable debian/manpages/rdoc1.9.1.10000664000000000000000000001131512247132667012376 0ustar .\" DO NOT MODIFY THIS FILE! it was generated by rd2 .TH rdoc1.9.1 1 "May 2007" .SH NAME .PP rdoc1.9.1 \- Generate documentation from Ruby script files .SH SYNOPSIS .nf \& rdoc1.9.1 [options] [names...] .fi .SH DESCRIPTION .PP Files are parsed, and the information they contain collected, before any output is produced. This allows cross references between all files to be resolved. If a name is a directory, it is traversed. If no names are specified, all Ruby files in the current directory (and subdirectories) are processed. .PP Available output formatters: chm, html, ri, xml .PP For information on where the output goes, use: .nf \& rdoc \-\-help\-output .fi .SH OPTIONS .TP .fi .B \-\-accessor, \-A accessorname[,..] comma separated list of additional class methods that should be treated like 'attr_reader' and friends. Option may be repeated. Each accessorname may have '=text' appended, in which case that text appears where the r/w/rw appears for normal accessors. .TP .fi .B \-\-all, \-a include all methods (not just public) in the output. .TP .fi .B \-\-charset, \-c charset specifies HTML character\-set .TP .fi .B \-\-debug, \-D displays lots on internal stuff .TP .fi .B \-\-diagram, \-d generate diagrams showing modules and classes. You need dot V1.8.6 or later to use the \-\-diagram option correctly. Dot is available from . .TP .fi .B \-\-exclude, \-x pattern do not process files or directories matching pattern. Files given explicitly on the command line will never be excluded. .TP .fi .B \-\-extension, \-E new=old treat files ending with .new as if they ended with .old. Using '\-E cgi=rb' will cause xxx.cgi to be parsed as a Ruby file .TP .fi .B \-\-fileboxes, \-F classes are put in boxes which represents files, where these classes reside. Classes shared between more than one file are shown with list of files that sharing them. Silently discarded if \-\-diagram is not given Experimental. .TP .fi .B \-\-fmt, \-f formatname set the output formatter (see below). .TP .fi .B \-\-help, \-h print usage. .TP .fi .B \-\-help\-output, \-O explain the various output options. .TP .fi .B \-\-image\-format, \-I gif|png|jpg|jpeg sets output image format for diagrams. Can be png, gif, jpeg, jpg. If this option is omitted, png is used. Requires \-\-diagram. .TP .fi .B \-\-include, \-i dir[,dir...] set (or add to) the list of directories to be searched when satisfying :include: requests. Can be used more than once. .TP .fi .B \-\-inline\-source, \-S show method source code inline, rather than via a popup link. .TP .fi .B \-\-line\-numbers, \-N include line numbers in the source code .TP .fi .B \-\-main, \-m name name will be the initial page displayed. .TP .fi .B \-\-merge, \-M when creating ri output, merge processed classes into previously documented classes of the name name. .TP .fi .B \-\-one\-file, \-1 put all the output into a single file. .TP .fi .B \-\-op, \-o dir set the output directory. .TP .fi .B \-\-opname, \-n name set the name of the output. Has no effect for HTML. .TP .fi .B \-\-promiscuous, \-p When documenting a file that contains a module or class also defined in other files, show all stuff for that module/class in each files page. By default, only show stuff defined in that particular file. .TP .fi .B \-\-quiet, \-q don't show progress as we parse. .TP .fi .B \-\-ri, \-r generate output for use by 'ri.' The files are stored in the '.rdoc' directory under your home directory unless overridden by a subsequent \-\-op parameter, so no special privileges are needed. .TP .fi .B \-\-ri\-site, \-R generate output for use by 'ri.' The files are stored in a site\-wide directory, making them accessible to others, so special privileges are needed. .TP .fi .B \-\-ri\-system, \-Y generate output for use by 'ri.' The files are stored in a system\-level directory, making them accessible to others, so special privileges are needed. This option is intended to be used during Ruby installations. .TP .fi .B \-\-show\-hash, \-H a name of the form #name in a comment is a possible hyperlink to an instance method name. When displayed, the '#' is removed unless this option is specified. .TP .fi .B \-\-style, \-s stylesheet\-url specifies the URL of a separate stylesheet. .TP .fi .B \-\-tab\-width, \-w n set the width of tab characters (default 8). .TP .fi .B \-\-template, \-T template\-name set the template used when generating output. .TP .fi .B \-\-title, \-t text set text as the title for the output. .TP .fi .B \-\-version, \-v display RDoc's version. .TP .fi .B \-\-webcvs, \-W url specify a URL for linking to a web frontend to CVS. If the URL contains a \'%s', the name of the current file will be substituted; if the URL doesn't contain a '%s', the filename will be appended to it. debian/manpages/rake1.9.1.10000664000000000000000000000103212247132667012364 0ustar .TH RAKE1.9 "1" "July 2006" "ruby 1.9.0" "User Commands" .SH NAME rake1.9.1 \- a ruby build program with capabilities similar to make .SH SYNOPSIS .IP rake1.9.1 [-f rakefile] [options] targets... .IP rake1.9.1 \-\-help .IP rake1.9.1 \-\-version .fi .SH DESCRIPTION .B rake1.9.1 is a simple ruby build program with capabilities similar to make. This is a basic help message containing pointers to more information. .PP Further help: .TP rake1.9.1 --help list all 'rake1.9.1' options .PP Further information: .IP http://rake.rubyforge.org/ debian/rdoc1.9.1.rd0000664000000000000000000001072712247132667011056 0ustar =begin = NAME rdoc1.9 - Generate documentation from Ruby script files = SYNOPSIS rdoc1.9 [options] [names...] = DESCRIPTION Files are parsed, and the information they contain collected, before any output is produced. This allows cross references between all files to be resolved. If a name is a directory, it is traversed. If no names are specified, all Ruby files in the current directory (and subdirectories) are processed. Available output formatters: chm, html, ri, xml For information on where the output goes, use: rdoc --help-output = OPTIONS : --accessor, -A ((|accessorname[,..]|)) comma separated list of additional class methods that should be treated like 'attr_reader' and friends. Option may be repeated. Each accessorname may have '=text' appended, in which case that text appears where the r/w/rw appears for normal accessors. : --all, -a include all methods (not just public) in the output. : --charset, -c ((|charset|)) specifies HTML character-set : --debug, -D displays lots on internal stuff : --diagram, -d generate diagrams showing modules and classes. You need dot V1.8.6 or later to use the --diagram option correctly. Dot is available from (()). : --exclude, -x ((|pattern|)) do not process files or directories matching pattern. Files given explicitly on the command line will never be excluded. : --extension, -E ((|new|))=((|old|)) treat files ending with .new as if they ended with .old. Using '-E cgi=rb' will cause xxx.cgi to be parsed as a Ruby file : --fileboxes, -F classes are put in boxes which represents files, where these classes reside. Classes shared between more than one file are shown with list of files that sharing them. Silently discarded if --diagram is not given Experimental. : --fmt, -f ((|formatname|)) set the output formatter (see below). : --help, -h print usage. : --help-output, -O explain the various output options. : --image-format, -I ((|(('gif|png|jpg|jpeg'))|)) sets output image format for diagrams. Can be png, gif, jpeg, jpg. If this option is omitted, png is used. Requires --diagram. : --include, -i ((|dir[,dir...]|)) set (or add to) the list of directories to be searched when satisfying ((':include:')) requests. Can be used more than once. : --inline-source, -S show method source code inline, rather than via a popup link. : --line-numbers, -N include line numbers in the source code : --main, -m ((|name|)) ((|name|)) will be the initial page displayed. : --merge, -M when creating ri output, merge processed classes into previously documented classes of the name name. : --one-file, -1 put all the output into a single file. : --op, -o ((|dir|)) set the output directory. : --opname, -n ((|name|)) set the ((|name|)) of the output. Has no effect for HTML. : --promiscuous, -p When documenting a file that contains a module or class also defined in other files, show all stuff for that module/class in each files page. By default, only show stuff defined in that particular file. : --quiet, -q don't show progress as we parse. : --ri, -r generate output for use by 'ri.' The files are stored in the '.rdoc' directory under your home directory unless overridden by a subsequent --op parameter, so no special privileges are needed. : --ri-site, -R generate output for use by 'ri.' The files are stored in a site-wide directory, making them accessible to others, so special privileges are needed. : --ri-system, -Y generate output for use by 'ri.' The files are stored in a system-level directory, making them accessible to others, so special privileges are needed. This option is intended to be used during Ruby installations. : --show-hash, -H a name of the form #name in a comment is a possible hyperlink to an instance method name. When displayed, the '#' is removed unless this option is specified. : --style, -s ((|stylesheet-url|)) specifies the URL of a separate stylesheet. : --tab-width, -w ((|n|)) set the width of tab characters (default 8). : --template, -T ((|template-name|)) set the template used when generating output. : --title, -t ((|text|)) set ((|text|)) as the title for the output. : --version, -v display RDoc's version. : --webcvs, -W ((|url|)) specify a URL for linking to a web frontend to CVS. If the URL contains a '%s', the name of the current file will be substituted; if the URL doesn't contain a '%s', the filename will be appended to it. =end debian/compat0000664000000000000000000000000212247132667010400 0ustar 9 debian/libruby1.9.1.lintian-overrides0000664000000000000000000000037112247132666014621 0ustar # After discussions at Bug#367024, a note is mentioned in debian/copyright. libruby1.9.1 binary: possible-gpl-code-linked-with-openssl # known & ignored. libruby1.9.1 binary: package-name-doesnt-match-sonames # known & ignored image-file-in-usr-lib debian/gbp.conf0000664000000000000000000000003612247132667010620 0ustar [DEFAULT] pristine-tar = True debian/run-test-suites.bash0000775000000000000000000000170213453417702013133 0ustar #!/bin/bash set -e MAXFAIL=39 MAXERR=3 echo "*******************************************************************" echo "Running 'make test'" echo make OPTS=-v test echo echo "*******************************************************************" echo "Running 'make test-all'" echo mv test/drb _test_drb # DRB tests hang make TESTS=-v test-all 2>&1 |tee make-test-all.log || true mv _test_drb test/drb # DRB tests hang echo echo "'make test-all' finished. checking number of failures and errors." echo "max number allowed: failures:$MAXFAIL errors:$MAXERR" if ! grep -q tests, make-test-all.log; then echo "Could not find number of failures. Interpreter crash? Failing build." exit 1 fi f=$(grep tests, make-test-all.log) fail=$(echo $f | cut -d ' ' -f 5) err=$(echo $f | cut -d ' ' -f 7) if [ $err -gt $MAXERR ];then echo "Too many errors. Failing build." exit 1 fi if [ $fail -gt $MAXFAIL ];then echo "Too many failures. Failing build." exit 1 fi exit 0 debian/NEWS0000664000000000000000000000720112247132667007701 0ustar ruby1.9.1 (1.9.2.180-4) unstable; urgency=low * Rubygems executables are now installed to /usr/local/bin, instead of /var/lib/gems/1.9.2/bin * But the other files created by rubygems stay in /var/lib/gems/1.9.2. Several commenters in #448639 and #403407 argued in favor of the switch to /usr/local/bin. Those two bugs can therefore be closed. However, the issue is not completely solved, as rubygems still installs files in /var/lib/gems. Nobody in the bug logs explained why that was an issue. If you care about it, please open a new bug. Fixes rubygems bugs: #448639, #403407 -- Lucas Nussbaum Tue, 03 May 2011 16:11:25 +0200 ruby1.9.1 (1.9.2.0-2) unstable; urgency=low $LOAD_PATH is changed in Ruby 1.9.2-p0 as the following (for i386): ["/usr/local/lib/site_ruby/1.9.1", "/usr/local/lib/site_ruby/1.9.1/i486-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby/vendor_ruby/1.9.1", "/usr/lib/ruby/vendor_ruby/1.9.1/i486-linux", "/usr/lib/ruby/vendor_ruby", "/usr/lib/ruby/1.9.1", "/usr/lib/ruby/1.9.1/i486-linux"] Please note that "." is no longer part of the $LOAD_PATH, so you might need to change require statements using relative paths. This changes was introduced by the upstream developers. -- Tobias Grimm Sun, 15 Aug 2010 18:01:51 +0200 ruby1.9 (1.9.1.0-1) experimental; urgency=low $LOAD_PATH is changed in Ruby 1.9.1-p0 as the following: ["/usr/local/lib/site_ruby/1.9.1", "/usr/local/lib/site_ruby/1.9.1/i486-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby1.9/vendor_ruby/1.9.1", "/usr/lib/ruby1.9/vendor_ruby/1.9.1/i486-linux", "/usr/lib/ruby1.9/vendor_ruby", "/usr/lib/ruby1.9/1.9.1", "/usr/lib/ruby1.9/1.9.1/i486-linux", "."] This changes was introduced by the upstream author. Ruby 1.9.1 may be incompatible with older version of Ruby. So we reject old "i386-linux" directory from $LOAD_PATH. If you have libraries in old $LOAD_PATH, please rebuild it with this version of ruby1.9-dev package. -- akira yamada Tue, 03 Feb 2009 14:03:04 +0900 ruby1.9 (1.9.0.0-1) unstable; urgency=low $LOAD_PATH is changed in Ruby 1.9.0-0 as the following: ["/usr/local/lib/site_ruby/1.9.0", "/usr/local/lib/site_ruby/1.9.0/i486-linux", "/usr/local/lib/site_ruby/1.9/i386-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby/vendor_ruby/1.9.0", "/usr/lib/ruby/vendor_ruby/1.9.0/i486-linux", "/usr/lib/ruby/vendor_ruby", "/usr/lib/ruby/1.9.0", "/usr/lib/ruby/1.9.0/i486-linux", "/usr/lib/ruby/1.9/i386-linux", "."] This changes was introduced because Ruby 1.9.1 (or later version) may be incompatible with this version of Ruby. If you have libraries in old $LOAD_PATH, please rebuild it with this version of ruby1.9-dev package. -- akira yamada Wed, 26 Dec 2007 10:34:48 +0900 ruby1.9 (1.9.0+20050623-2) unstable; urgency=high On ix86 architecutre, $LOAD_PATH is changed as follows: /usr/local/lib/site_ruby/1.9 /usr/local/lib/site_ruby/1.9/i486-linux /usr/local/lib/site_ruby /usr/lib/ruby/1.9 /usr/lib/ruby/1.9/i486-linux . This change is brought to follow the change of dpkg 1.13. It changed architecture name to "i486-linux-gnu" from "i386-linux". If you locally build extension libraries, please rebuild it with this version of ruby1.9-dev package. NOTE: In this version, ruby1.9 temporally searches files in /usr/local/lib/site_ruby/1.9/i386-linux and /usr/lib/ruby/1.9/i386-linux. -- akira yamada Wed, 29 Jun 2005 23:50:58 +0900 debian/etc/0000775000000000000000000000000012247132722007745 5ustar debian/etc/bash_completion.d/0000775000000000000000000000000012247132722013335 5ustar debian/etc/bash_completion.d/gem.in0000664000000000000000000001544112247132667014452 0ustar # Michael Schuerig, michael@schuerig.de, 2007-02-24 # [2007-12-21] Updated by Victor Serbin (chepel@hotmail.com) for gem@@VERSION@@ v1.0 # Free for all uses. have gem@@VERSION@@ && _gem@@DOTLESS_VERSION@@() { local cur prev completions COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} COMMANDS='build cert check cleanup contents dependency\ environment fetch generate_index help install list\ lock mirror outdated pristine query rdoc search server\ sources specification uninstall unpack update which' GEM_OPTIONS='\ -h --help\ -v --version' COMMON_OPTIONS='\ -h --help\ -V --verbose --no-verbose\ -q --quiet\ --config-file\ --backtrace\ --debug' CERT_OPTIONS='\ -a -add\ -l --list\ -r --remove\ -b --build\ -C --certificate\ -K --private-key\ -s --sign' CHECK_OPTIONS='\ --verify\ -a --alien\ -t --test\ -v --version' CLEANUP_OPTIONS='\ -d --dry-run' CONTENTS_OPTIONS='\ -v --version\ -s --spec-dir\ -l --lib-only --no-lib-only' DEPENDENCY_OPTIONS='\ -v --version\ --platform\ -R --reverse-dependencies --no-reverse-dependencies\ -p --pipe' ENVIRONMENT_OPTIONS='' FETCH_OPTIONS='\ -v --version\ --platform\ -B --bulk-threshold\ -p --http-proxy --no-http-proxy\ --source' GENERATE_INDEX_OPTIONS='\ -d --directory' HELP_OPTIONS=$COMMANDS INSTALL_OPTIONS='\ --platform\ -v --version\ -i --install-dir\ -d --rdoc --no-rdoc\ --ri --no-ri\ -E --env-shebang\ -f --force --no-force\ -t --test --no-test\ -w --wrappers --no-wrappers\ -P --trust-policy\ --ignore-dependencies\ -y --include-dependencies\ --format-executable --no-format-executable\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' LIST_OPTIONS='\ -d --details --no-details\ --versions --no-versions\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' LOCK_OPTIONS='\ -s --strict --no-strict' MIRROR_OPTIONS='' OUTDATED_OPTIONS='\ --platform' PRISTINE_OPTIONS='\ --all\ -v --version' QUERY_OPTIONS='\ -n --name-matches\ -d --details --no-details\ --versions --no-versions\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' RDOC_OPTIONS='\ --all\ --rdoc --no-rdoc\ --ri --no-ri\ -v --version' SEARCH_OPTIONS='\ -d --details --no-details\ --versions --no-versions\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' SERVER_OPTIONS='\ -p --port\ -d --dir\ --daemon --no-daemon' SOURCES_OPTIONS='\ -a --add\ -l --list\ -r --remove\ -u --update\ -c --clear-all' SPECIFICATION_OPTIONS='\ -v --version\ --platform\ --all\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' UNINSTALL_OPTIONS='\ -a --all --no-all\ -i --ignore-dependencies --no-ignore-dependencies\ -x --executables --no-executables\ -v --version\ --platform' UNPACK_OPTIONS='\ --target\ -v --version' UPDATE_OPTIONS='\ --system\ --platform\ -i --install-dir\ -d --rdoc --no-rdoc\ --ri --no-ri\ -E --env-shebang\ -f --force --no-force\ -t --test --no-test\ -w --wrappers --no-wrappers\ -P --trust-policy\ --ignore-dependencies\ -y --include-dependencies\ --format-executable --no-format-executable\ -l --local\ -r --remote\ -b --both\ -B --bulk-threshold\ --source\ -p --http-proxy --no-http-proxy\ -u --update-sources --no-update-sources' WHICH_OPTIONS='\ -a --all --no-all\ -g --gems-first --no-gems-first' case "${prev}" in build) completions="$COMMON_OPTIONS $BUILD_OPTIONS" ;; cert) completions="$COMMON_OPTIONS $CERT_OPTIONS" ;; check) completions="$COMMON_OPTIONS $CHECK_OPTIONS" ;; cleanup) completions="$COMMON_OPTIONS $CLEANUP_OPTIONS" ;; contents) completions="$COMMON_OPTIONS $CONTENTS_OPTIONS" ;; dependency) completions="$COMMON_OPTIONS $DEPENDENCY_OPTIONS" ;; environment) completions="$COMMON_OPTIONS $ENVIRONMENT_OPTIONS" ;; fetch) completions="$COMMON_OPTIONS $FETCH_OPTIONS" ;; generate_index) completions="$COMMON_OPTIONS $GENERATE_INDEX_OPTIONS" ;; help) completions="$COMMON_OPTIONS $HELP_OPTIONS" ;; install) completions="$COMMON_OPTIONS $INSTALL_OPTIONS" ;; list) completions="$COMMON_OPTIONS $LIST_OPTIONS" ;; lock) completions="$COMMON_OPTIONS $LOCK_OPTIONS" ;; mirror) completions="$COMMON_OPTIONS $MIRROR_OPTIONS" ;; outdated) completions="$COMMON_OPTIONS $OUTDATED_OPTIONS" ;; pristine) completions="$COMMON_OPTIONS $PRISTINE_OPTIONS" ;; query) completions="$COMMON_OPTIONS $QUERY_OPTIONS" ;; rdoc) completions="$COMMON_OPTIONS $RDOC_OPTIONS" ;; search) completions="$COMMON_OPTIONS $SEARCH_OPTIONS" ;; server) completions="$COMMON_OPTIONS $SERVER_OPTIONS" ;; sources) completions="$COMMON_OPTIONS $SOURCES_OPTIONS" ;; specification) completions="$COMMON_OPTIONS $SPECIFICATION_OPTIONS" ;; uninstall) completions="$COMMON_OPTIONS $UNINSTALL_OPTIONS" ;; unpack) completions="$COMMON_OPTIONS $UNPACK_OPTIONS" ;; update) completions="$COMMON_OPTIONS $UPDATE_OPTIONS" ;; which) completions="$COMMON_OPTIONS $WHICH_OPTIONS" ;; *) completions="$COMMANDS $GEM_OPTIONS" ;; esac COMPREPLY=( $( compgen -W "$completions" -- $cur )) return 0 } [ -n "${have:-}" ] && complete -F _gem@@DOTLESS_VERSION@@ $filenames gem@@VERSION@@ debian/patches/0000775000000000000000000000000013453434525010627 5ustar debian/patches/110829-hurd_dirent_usage.patch0000664000000000000000000000064412247132667016113 0ustar hurd: fix dirent issue http://redmine.ruby-lang.org/issues/5250 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=639664 --- a/configure.in +++ b/configure.in @@ -965,6 +965,10 @@ AS_CASE(["$target_os"], AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) LIBS="-lm $LIBS" ], +[gnu*], [ + AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) + LIBS="-lm $LIBS" + ], [nextstep*], [ ], [openstep*], [ ], [rhapsody*], [ ], debian/patches/CVE-2018-16395.patch0000664000000000000000000000152713366565255013357 0ustar From f653cfa43f0f20e8c440122ea982382b6228e7f5 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Fri, 27 Jul 2018 17:01:04 +0900 Subject: [PATCH] x509name: fix OpenSSL::X509::Name#{cmp,<=>} Fix wrong use of X509_NAME_cmp() return value. OpenSSL::X509::Name#<=> could return 0 when the two objects aren't identical. Reported by Tyler Eckstein. CVE-2018-16395. Reference: https://hackerone.com/reports/387250 diff --git a/ext/openssl/ossl_x509name.c b/ext/openssl/ossl_x509name.c index e5a4f6a..0a0a47b 100644 --- a/ext/openssl/ossl_x509name.c +++ b/ext/openssl/ossl_x509name.c @@ -288,7 +288,7 @@ ossl_x509name_cmp(VALUE self, VALUE other) result = ossl_x509name_cmp0(self, other); if (result < 0) return INT2FIX(-1); - if (result > 1) return INT2FIX(1); + if (result > 0) return INT2FIX(1); return INT2FIX(0); } debian/patches/20121014_bison_2_6_fix.diff0000664000000000000000000000107012247132667015061 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 20121014_bison_2_6_fix.diff by James Healy ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: 1.9.3p286 doesn't build cleanly against bison 2.6. This patch is ## DP: backported from upstream changeset 36532. This can probably be ## DP: removed with the next upstream release --- a/tool/ytab.sed +++ b/tool/ytab.sed @@ -11,6 +11,12 @@ i\ a\ #endif } +/^extern int yydebug;/{ +i\ +#ifndef yydebug +a\ +#endif +} /^yydestruct.*yymsg/,/#endif/{ /^yydestruct/{ /parser/!{ debian/patches/series0000664000000000000000000000243213453430051012033 0ustar # Might still be useful #919_common.mk_tweaks.diff #940_test_thread_mutex_sync_shorter.diff #100518_r27464_threading_non-nptl.diff 100731_disable-tests.diff 20100829-rubygems_disable_update_system.diff 20100829-rubygems_default_dir.diff 110720_tcltk_disable_rpath.diff 090729_fix_Makefile_deps.diff 090803_exclude_rdoc.diff 110825-run-tests-verbose.patch 110825-tests_broken_as_root.patch 110829-freebsd_assert_normal_exit.patch 110829-hurd_dirent_usage.patch hurd-path-max.diff 20120927-rubygems_disable_upstream_certs.patch 20121014_bison_2_6_fix.diff 20131218-stack-size.patch CVE-2014-4975.patch CVE-2014-8080.patch CVE-2014-8090.patch CVE-2009-5147.patch CVE-2015-1855.patch CVE-2015-9096.patch CVE-2016-2337.patch CVE-2016-2339.patch CVE-2016-7798.patch openssl-test-failure.patch CVE-2017-0898-10748-14033-14064.patch CVE-2017-0899-0900-0901.patch CVE-2017-17405.patch CVE-2017-17790.patch #CVE-2018-1000074-pre.patch #CVE-2018-1000074.patch CVE-2018-1000075.patch CVE-2018-1000077.patch CVE-2018-1000078.patch CVE-2018-6914.patch CVE-2018-8778.patch CVE-2018-8779.patch CVE-2018-8780.patch CVE-2018-8777-CVE-2017-17742-pre.patch CVE-2017-17742-pre.patch CVE-2017-17742.patch CVE-2018-8777.patch CVE-2018-16395.patch CVE-2018-16396.patch fixing_expired_SSL_certificates.patch CVE-2019-8320-25.patch debian/patches/919_common.mk_tweaks.diff0000775000000000000000000000370612247132667015352 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 919_common.mk_tweaks.dpatch by Lucas Nussbaum ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Adds more verbosity to the build process. Build parse.o with -Q to ## DP: avoid timeouts on mips(el). Run the testsuite with -v, to see which ## DP: tests are blocking. ## DP: Also run a "watcher", which outputs the result of ps on a regular ## DP: basis. This avoids a timeout on slow arches. @DPATCH@ Index: b/common.mk =================================================================== --- a/common.mk 2010-07-20 21:45:45.000000000 +0900 +++ b/common.mk 2010-07-20 21:46:15.000000000 +0900 @@ -393,7 +393,7 @@ test: test-sample btest-ruby test-knownbug test-all: - $(RUNRUBY) "$(srcdir)/test/runner.rb" $(TESTS) + $(RUNRUBY) "$(srcdir)/test/runner.rb" -v $(TESTS) extconf: $(PREP) $(MAKEDIRS) "$(EXTCONFDIR)" @@ -424,6 +424,33 @@ {$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed parse.h {$(VPATH)}parse.h: {$(VPATH)}parse.c +clean-local:: + rm -f start-watch.stamp + +# wait at least 10 secs for gcc to start. +# then wait for gcc to finish +# touch -d "1 hour ago" to allow re-running builds without rebuilding parse.o +start-watcher.stamp: + ( n=0 ;\ + while [ $$n -lt 10 ]; do \ + [ $$(ps aux | grep gcc | grep parse.o | grep -v grep | wc -l) -gt 0 ] && echo "# gcc parse.o started!" && break ;\ + n=$$(expr $$n + 1) ;\ + sleep 1 ;\ + done ;\ + [ $$n -eq 60 ] && echo "# gcc never started, exiting." && exit 1 ;\ + str="starting..." ;\ + while [ "$$str" != "" ]; do \ + echo "# running... $$str" ;\ + sleep 5 ;\ + str=$$(ps aux | grep gcc | grep parse.o | grep -v grep) ;\ + done ;\ + echo "# watched finished." ; \ + touch -d "1 hour ago" start-watcher.stamp ) & + +parse.o: start-watcher.stamp + +parse.o: CFLAGS += -Q + {$(srcdir)}.y.c: $(YACC) -d $(YFLAGS) -o y.tab.c $(SRC_FILE) sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new debian/patches/090803_exclude_rdoc.diff0000664000000000000000000000136712247132667014755 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 090803_exclude_rdoc.dpatch by Daigo Moriwaki ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Exclude some files from rdoc. @DPATCH@ --- a/common.mk +++ b/common.mk @@ -404,7 +404,7 @@ post-install-doc:: rdoc: PHONY main @echo Generating RDoc documentation - $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" $(RDOCFLAGS) "$(srcdir)" + $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" $(RDOCFLAGS) --exclude mkconfig.rb --exclude test_ --exclude bm_ --exclude "tool/make-snapshot" "$(srcdir)" rdoc-coverage: PHONY main @echo Generating RDoc coverage report debian/patches/CVE-2018-1000074-pre.patch0000664000000000000000000000605013260674253014253 0ustar From 0a524692e99a31d2473083bb33d8fb7ed96f2e62 Mon Sep 17 00:00:00 2001 From: leosilva Date: Tue, 3 Apr 2018 09:48:43 -0300 Subject: [PATCH] CVE-2018-1000074 is dependent from this --- lib/rubygems.rb | 1 + lib/rubygems/config_file.rb | 2 +- lib/rubygems/safe_yaml.rb | 48 +++++++++++++++++++++++++++++++++++++++++++ lib/rubygems/specification.rb | 2 +- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 lib/rubygems/safe_yaml.rb diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 7ed2746..e387ad5 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -678,6 +678,7 @@ module Gem end require 'yaml' + require 'rubygems/safe_yaml' # If we're supposed to be using syck, then we may have to force # activate it via the YAML::ENGINE API. diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb index 136e8b4..0422fa2 100644 --- a/lib/rubygems/config_file.rb +++ b/lib/rubygems/config_file.rb @@ -250,7 +250,7 @@ class Gem::ConfigFile return {} unless filename and File.exist? filename begin - YAML.load(File.read(filename)) + Gem::SafeYAML.load(File.read(filename)) rescue ArgumentError warn "Failed to load #{config_file_name}" rescue Errno::EACCES diff --git a/lib/rubygems/safe_yaml.rb b/lib/rubygems/safe_yaml.rb new file mode 100644 index 0000000..b98cfaa --- /dev/null +++ b/lib/rubygems/safe_yaml.rb @@ -0,0 +1,48 @@ +module Gem + + ### + # This module is used for safely loading YAML specs from a gem. The + # `safe_load` method defined on this module is specifically designed for + # loading Gem specifications. For loading other YAML safely, please see + # Psych.safe_load + + module SafeYAML + WHITELISTED_CLASSES = %w( + Symbol + Time + Date + Gem::Dependency + Gem::Platform + Gem::Requirement + Gem::Specification + Gem::Version + Gem::Version::Requirement + YAML::Syck::DefaultKey + Syck::DefaultKey + ) + + WHITELISTED_SYMBOLS = %w( + development + runtime + ) + + if ::YAML.respond_to? :safe_load + def self.safe_load input + ::YAML.safe_load(input, WHITELISTED_CLASSES, WHITELISTED_SYMBOLS, true) + end + + def self.load input + ::YAML.safe_load(input, [::Symbol]) + end + else + warn "YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)." + def self.safe_load input, *args + ::YAML.load input + end + + def self.load input + ::YAML.load input + end + end + end +end diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 2ec1228..c8c7c78 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -490,7 +490,7 @@ class Gem::Specification Gem.load_yaml input = normalize_yaml_input input - spec = YAML.load input + spec = Gem::SafeYAML.safe_load input if spec && spec.class == FalseClass then raise Gem::EndOfYAMLException -- 2.7.4 debian/patches/CVE-2018-16396.patch0000664000000000000000000000642413366606037013353 0ustar From a2958f6743664006d21fc0bafd4ca6214df1d429 Mon Sep 17 00:00:00 2001 From: nagachika Date: Wed, 17 Oct 2018 15:06:18 +0000 Subject: [PATCH] merge revision(s) 65125: infect taint flag on Array#pack and String#unpack with the directives "B", "b", "H" and "h". * pack.c (pack_pack, pack_unpack_internal): infect taint flag. * test/ruby/test_pack.rb: add test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@65128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- pack.c | 7 +++++++ test/ruby/test_pack.rb | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/pack.c b/pack.c index f3bfa6e..a361d71 100644 --- a/pack.c +++ b/pack.c @@ -928,6 +928,7 @@ pack_pack(VALUE ary, VALUE fmt) StringValue(from); ptr = RSTRING_PTR(from); plen = RSTRING_LEN(from); + OBJ_INFECT(res, from); if (len == 0 && type == 'm') { encodes(res, ptr, plen, type, 0); @@ -953,6 +954,7 @@ pack_pack(VALUE ary, VALUE fmt) case 'M': /* quoted-printable encoded string */ from = rb_obj_as_string(NEXTFROM); + OBJ_INFECT(res, from); if (len <= 1) len = 72; qpencode(res, from, len); @@ -978,6 +980,7 @@ pack_pack(VALUE ary, VALUE fmt) } else { t = StringValuePtr(from); + OBJ_INFECT(res, from); } if (!associates) { associates = rb_ary_new(); @@ -1467,6 +1470,7 @@ pack_unpack(VALUE str, VALUE fmt) len = (send - s) * 8; bits = 0; UNPACK_PUSH(bitstr = rb_str_new(0, len)); + OBJ_INFECT(bitstr, str); t = RSTRING_PTR(bitstr); for (i=0; i>= 1; @@ -1487,6 +1491,7 @@ pack_unpack(VALUE str, VALUE fmt) len = (send - s) * 8; bits = 0; UNPACK_PUSH(bitstr = rb_str_new(0, len)); + OBJ_INFECT(bitstr, str); t = RSTRING_PTR(bitstr); for (i=0; i Date: Tue, 20 Sep 2016 21:27:28 +0900 Subject: [PATCH] cipher: don't set dummy encryption key in Cipher#initialize Remove the encryption key initialization from Cipher#initialize. This is effectively a revert of r32723 ("Avoid possible SEGV from AES encryption/decryption", 2011-07-28). r32723, which added the key initialization, was a workaround for Ruby Bug #2768. For some certain ciphers, calling EVP_CipherUpdate() before setting an encryption key caused segfault. It was not a problem until OpenSSL implemented GCM mode - the encryption key could be overridden by repeated calls of EVP_CipherInit_ex(). But, it is not the case for AES-GCM ciphers. Setting a key, an IV, a key, in this order causes the IV to be reset to an all-zero IV. The problem of Bug #2768 persists on the current versions of OpenSSL. So, make Cipher#update raise an exception if a key is not yet set by the user. Since encrypting or decrypting without key does not make any sense, this should not break existing applications. Users can still call Cipher#key= and Cipher#iv= multiple times with their own responsibility. Reference: https://bugs.ruby-lang.org/issues/2768 Reference: https://bugs.ruby-lang.org/issues/8221 Reference: https://github.com/ruby/openssl/issues/49 --- ext/openssl/ossl_cipher.c | 25 +++++++++++++------------ test/test_cipher.rb | 29 +++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 18 deletions(-) Index: ruby1.9.1-1.9.3.484/ext/openssl/ossl_cipher.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/openssl/ossl_cipher.c 2017-06-20 08:51:02.607541186 -0400 +++ ruby1.9.1-1.9.3.484/ext/openssl/ossl_cipher.c 2017-06-20 08:51:02.607541186 -0400 @@ -35,6 +35,7 @@ */ VALUE cCipher; VALUE eCipherError; +static ID id_key_set; static VALUE ossl_cipher_alloc(VALUE klass); @@ -102,7 +103,6 @@ ossl_cipher_initialize(VALUE self, VALUE EVP_CIPHER_CTX *ctx; const EVP_CIPHER *cipher; char *name; - unsigned char key[EVP_MAX_KEY_LENGTH]; name = StringValuePtr(str); GetCipherInit(self, ctx); @@ -114,14 +114,7 @@ ossl_cipher_initialize(VALUE self, VALUE if (!(cipher = EVP_get_cipherbyname(name))) { ossl_raise(rb_eRuntimeError, "unsupported cipher algorithm (%s)", name); } - /* - * The EVP which has EVP_CIPH_RAND_KEY flag (such as DES3) allows - * uninitialized key, but other EVPs (such as AES) does not allow it. - * Calling EVP_CipherUpdate() without initializing key causes SEGV so we - * set the data filled with "\0" as the key by default. - */ - memset(key, 0, EVP_MAX_KEY_LENGTH); - if (EVP_CipherInit_ex(ctx, cipher, NULL, key, NULL, -1) != 1) + if (EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, -1) != 1) ossl_raise(eCipherError, NULL); return self; @@ -240,6 +233,9 @@ ossl_cipher_init(int argc, VALUE *argv, ossl_raise(eCipherError, NULL); } + if (p_key) + rb_ivar_set(self, id_key_set, Qtrue); + return self; } @@ -326,6 +322,8 @@ ossl_cipher_pkcs5_keyivgen(int argc, VAL OPENSSL_cleanse(key, sizeof key); OPENSSL_cleanse(iv, sizeof iv); + rb_ivar_set(self, id_key_set, Qtrue); + return Qnil; } @@ -353,6 +351,9 @@ ossl_cipher_update(int argc, VALUE *argv rb_scan_args(argc, argv, "11", &data, &str); + if (!RTEST(rb_attr_get(self, id_key_set))) + ossl_raise(eCipherError, "key not set"); + StringValue(data); in = (unsigned char *)RSTRING_PTR(data); if ((in_len = RSTRING_LENINT(data)) == 0) @@ -443,6 +444,8 @@ ossl_cipher_set_key(VALUE self, VALUE ke if (EVP_CipherInit_ex(ctx, NULL, NULL, (unsigned char *)RSTRING_PTR(key), NULL, -1) != 1) ossl_raise(eCipherError, NULL); + rb_ivar_set(self, id_key_set, Qtrue); + return key; } @@ -750,5 +753,7 @@ Init_ossl_cipher(void) rb_define_method(cCipher, "iv_len", ossl_cipher_iv_length, 0); rb_define_method(cCipher, "block_size", ossl_cipher_block_size, 0); rb_define_method(cCipher, "padding=", ossl_cipher_set_padding, 1); + + id_key_set = rb_intern_const("key_set"); } Index: ruby1.9.1-1.9.3.484/test/openssl/test_cipher.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/test_cipher.rb 2017-06-20 08:51:02.607541186 -0400 +++ ruby1.9.1-1.9.3.484/test/openssl/test_cipher.rb 2017-06-20 08:55:41.362876079 -0400 @@ -3,6 +3,25 @@ require_relative 'utils' if defined?(OpenSSL) class OpenSSL::TestCipher < Test::Unit::TestCase + + class << self + + def has_cipher?(name) + ciphers = OpenSSL::Cipher.ciphers + # redefine method so we can use the cached ciphers value from the closure + # and need not recompute the list each time + define_singleton_method :has_cipher? do |name| + ciphers.include?(name) + end + has_cipher?(name) + end + + def has_ciphers?(list) + list.all? { |name| has_cipher?(name) } + end + + end + def setup @c1 = OpenSSL::Cipher::Cipher.new("DES-EDE3-CBC") @c2 = OpenSSL::Cipher::DES.new(:EDE3, "CBC") @@ -61,6 +80,7 @@ class OpenSSL::TestCipher < Test::Unit:: def test_empty_data @c1.encrypt + @c1.random_key assert_raise(ArgumentError){ @c1.update("") } end @@ -90,16 +110,30 @@ class OpenSSL::TestCipher < Test::Unit:: assert_equal(pt, c2.update(ct) + c2.final) } end + end - def test_AES_crush - 500.times do - assert_nothing_raised("[Bug #2768]") do - # it caused OpenSSL SEGV by uninitialized key - OpenSSL::Cipher::AES128.new("ECB").update "." * 17 - end - end + def test_update_raise_if_key_not_set + assert_raise(OpenSSL::Cipher::CipherError) do + # it caused OpenSSL SEGV by uninitialized key [Bug #2768] + OpenSSL::Cipher::AES128.new("ECB").update "." * 17 end end + + def test_aes_gcm_key_iv_order_issue + pt = "[ruby/openssl#49]" + cipher = OpenSSL::Cipher.new("aes-128-gcm").encrypt + cipher.key = "x" * 16 + cipher.iv = "a" * 12 + ct1 = cipher.update(pt) << cipher.final + + cipher = OpenSSL::Cipher.new("aes-128-gcm").encrypt + cipher.iv = "a" * 12 + cipher.key = "x" * 16 + ct2 = cipher.update(pt) << cipher.final + + assert_equal ct1, ct2 + end if has_cipher?("aes-128-gcm") + end end debian/patches/110825-tests_broken_as_root.patch0000664000000000000000000000306112247132667016640 0ustar ## Description: add some description ## Origin/Author: add some origin or author ## Bug: bug URL Index: ruby1.9.1/test/gdbm/test_gdbm.rb =================================================================== --- ruby1.9.1.orig/test/gdbm/test_gdbm.rb 2012-02-26 18:47:26.000000000 +0900 +++ ruby1.9.1/test/gdbm/test_gdbm.rb 2012-02-26 19:43:59.000000000 +0900 @@ -47,7 +47,7 @@ end def test_delete_rdonly - if /^CYGWIN_9/ !~ SYSTEM + if /^CYGWIN_9/ !~ SYSTEM and Process.euid != 0 assert_raise(GDBMError) { @gdbm_rdonly.delete("foo") } @@ -103,7 +103,7 @@ assert_nil(gdbm.close) end def test_s_open_create_new - return if /^CYGWIN_9/ =~ SYSTEM + return if /^CYGWIN_9/ =~ SYSTEM or Process.euid == 0 save_mask = File.umask(0) begin Index: ruby1.9.1/test/test_find.rb =================================================================== --- ruby1.9.1.orig/test/test_find.rb 2012-02-26 18:45:36.000000000 +0900 +++ ruby1.9.1/test/test_find.rb 2012-02-26 19:42:39.000000000 +0900 @@ -92,6 +92,7 @@ def test_unreadable_dir skip "no meaning test on Windows" if /mswin|mingw/ =~ RUBY_PLATFORM + skip "does not work when running as root" if Process.euid == 0 Dir.mktmpdir {|d| Dir.mkdir(dir = "#{d}/dir") File.open(file = "#{dir}/foo", "w"){} @@ -107,6 +108,7 @@ end def test_unsearchable_dir + skip "does not work when running as root" if Process.euid == 0 Dir.mktmpdir {|d| Dir.mkdir(dir = "#{d}/dir") File.open(file = "#{dir}/foo", "w"){} debian/patches/20120927-rubygems_disable_upstream_certs.patch0000664000000000000000000000214312244662453021214 0ustar Description: Use the certificates maintained by the distro Rather than using the certificates packaged in the upstream sources to verify server SSL certificates, use the certificates provided by the ca-certificates package. Author: Tyler Hicks Forwarded: not-needed Bug-Debian: http://bugs.debian.org/689074 Index: ruby1.9.1-1.9.3.194/lib/rubygems/remote_fetcher.rb =================================================================== --- ruby1.9.1-1.9.3.194.orig/lib/rubygems/remote_fetcher.rb 2012-09-27 10:48:23.046684546 -0700 +++ ruby1.9.1-1.9.3.194/lib/rubygems/remote_fetcher.rb 2012-09-27 10:48:42.590685014 -0700 @@ -8,7 +8,7 @@ class Gem::RemoteFetcher - BuiltinSSLCerts = File.expand_path("./ssl_certs/*.pem", File.dirname(__FILE__)) + BuiltinSSLCerts = "/etc/ssl/certs/ca-certificates.crt" include Gem::UserInteraction @@ -354,8 +354,8 @@ end def add_rubygems_trusted_certs(store) - Dir.glob(BuiltinSSLCerts).each do |ssl_cert_file| - store.add_file ssl_cert_file + if File.file? BuiltinSSLCerts + store.add_file BuiltinSSLCerts end end debian/patches/CVE-2014-8080.patch0000664000000000000000000000702312433175735013252 0ustar Description: fix denial of service via XML expansion Origin: backport, http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=48161 Index: ruby1.9.1-1.9.3.484/lib/rexml/entity.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rexml/entity.rb 2014-11-19 15:21:08.260737462 -0500 +++ ruby1.9.1-1.9.3.484/lib/rexml/entity.rb 2014-11-19 15:21:08.256737433 -0500 @@ -138,8 +138,14 @@ matches = @value.scan(PEREFERENCE_RE) rv = @value.clone if @parent + sum = 0 matches.each do |entity_reference| entity_value = @parent.entity( entity_reference[0] ) + if sum + entity_value.bytesize > REXML.entity_expansion_text_limit + raise "entity expansion has grown too large" + else + sum += entity_value.bytesize + end rv.gsub!( /%#{entity_reference.join};/um, entity_value ) end end Index: ruby1.9.1-1.9.3.484/test/rexml/test_document.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rexml/test_document.rb 2014-11-19 15:21:08.260737462 -0500 +++ ruby1.9.1-1.9.3.484/test/rexml/test_document.rb 2014-11-19 15:21:44.180993222 -0500 @@ -47,6 +47,20 @@ EOF + XML_WITH_NESTED_PARAMETER_ENTITY = < + + + + + + + +]> + +EOF + XML_WITH_4_ENTITY_EXPANSION = < ]>' + len = 5120 # 5k per entity + template.sub!(/\^/, "B" * len) + + # 10k is OK + entities = '%a;' * 2 # 5k entity * 2 = 10k + REXML::Document.new(template.sub(/\$/, entities)) + + # above 10k explodes + entities = '%a;' * 3 # 5k entity * 2 = 15k + assert_raises(REXML::ParseException) do + REXML::Document.new(template.sub(/\$/, entities)) + end + end + def test_raw source = ' debian/patches/CVE-2016-2339.patch0000664000000000000000000001130313122204602013227 0ustar Backport of: From bcc2421b4938fc1d9f5f3fb6ef2320571b27af42 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 13 Dec 2015 09:35:58 +0000 Subject: [PATCH] function.c: check arguments * ext/fiddle/function.c (initialize): check all arguments first. reported by Marcin 'Icewall' Noga of Cisco Talos. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 ++++- ext/fiddle/function.c | 50 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 17 deletions(-) #diff --git a/ChangeLog b/ChangeLog #index a4f154ea583e..93d58ee69d63 100644 #--- a/ChangeLog #+++ b/ChangeLog #@@ -1,4 +1,7 @@ #-Sun Dec 13 18:35:11 2015 Nobuyoshi Nakada #+Sun Dec 13 18:35:57 2015 Nobuyoshi Nakada #+ #+ * ext/fiddle/function.c (initialize): check all arguments first. #+ reported by Marcin 'Icewall' Noga of Cisco Talos. # # * ext/fiddle/conversions.h (PTR2NUM): use signed integer to make # Fixnum for negative values. Index: ruby1.9.1-1.9.3.484/ext/fiddle/function.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/fiddle/function.c 2017-06-20 07:37:46.624053955 -0400 +++ ruby1.9.1-1.9.3.484/ext/fiddle/function.c 2017-06-20 07:38:26.616455845 -0400 @@ -2,6 +2,22 @@ VALUE cFiddleFunction; +#define MAX_ARGS (SIZE_MAX / (sizeof(void *) + sizeof(fiddle_generic)) - 1) + +#define Check_Max_Args(name, len) \ + Check_Max_Args_(name, len, "") +#define Check_Max_Args_Long(name, len) \ + Check_Max_Args_(name, len, "l") +#define Check_Max_Args_(name, len, fmt) \ + if ((size_t)(len) < MAX_ARGS) { \ + /* OK */ \ + } \ + else { \ + rb_raise(rb_eTypeError, \ + name" is so large that it can cause integer overflow (%"fmt"d)", \ + (len)); \ + } + static void deallocate(void *p) { @@ -42,15 +58,34 @@ static VALUE initialize(int argc, VALUE argv[], VALUE self) { ffi_cif * cif; - ffi_type **arg_types; + ffi_type **arg_types, *rtype; ffi_status result; - VALUE ptr, args, ret_type, abi; - int i; + VALUE ptr, args, ret_type, abi, ary; + int i, len; + int nabi; + void *cfunc; rb_scan_args(argc, argv, "31", &ptr, &args, &ret_type, &abi); - if(NIL_P(abi)) abi = INT2NUM(FFI_DEFAULT_ABI); + ptr = rb_Integer(ptr); + cfunc = NUM2PTR(ptr); + PTR2NUM(cfunc); + nabi = NIL_P(abi) ? FFI_DEFAULT_ABI : NUM2INT(abi); + abi = INT2FIX(nabi); + i = NUM2INT(ret_type); + rtype = INT2FFI_TYPE(i); + ret_type = INT2FIX(i); Check_Type(args, T_ARRAY); + len = RARRAY_LENINT(args); + Check_Max_Args("args", len); + ary = rb_ary_subseq(args, 0, len); + for (i = 0; i < RARRAY_LEN(args); i++) { + VALUE a = RARRAY_PTR(args)[i]; + int type = NUM2INT(a); + (void)INT2FFI_TYPE(type); /* raise */ + if (INT2FIX(type) != a) rb_ary_store(ary, i, INT2FIX(type)); + } + OBJ_FREEZE(ary); rb_iv_set(self, "@ptr", ptr); rb_iv_set(self, "@args", args); @@ -59,20 +94,15 @@ initialize(int argc, VALUE argv[], VALUE TypedData_Get_Struct(self, ffi_cif, &function_data_type, cif); - arg_types = xcalloc(RARRAY_LEN(args) + 1, sizeof(ffi_type *)); + arg_types = xcalloc(len + 1, sizeof(ffi_type *)); for (i = 0; i < RARRAY_LEN(args); i++) { int type = NUM2INT(RARRAY_PTR(args)[i]); arg_types[i] = INT2FFI_TYPE(type); } - arg_types[RARRAY_LEN(args)] = NULL; + arg_types[len] = NULL; - result = ffi_prep_cif ( - cif, - NUM2INT(abi), - RARRAY_LENINT(args), - INT2FFI_TYPE(NUM2INT(ret_type)), - arg_types); + result = ffi_prep_cif(cif, nabi, len, rtype, arg_types); if (result) rb_raise(rb_eRuntimeError, "error creating CIF %d", result); @@ -94,6 +124,7 @@ function_call(int argc, VALUE argv[], VA types = rb_iv_get(self, "@args"); cPointer = rb_const_get(mFiddle, rb_intern("Pointer")); + Check_Max_Args("number of arguments", argc); if(argc != RARRAY_LENINT(types)) { rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, RARRAY_LENINT(types)); @@ -116,8 +147,9 @@ function_call(int argc, VALUE argv[], VA for (i = 0; i < argc; i++) { VALUE type = RARRAY_PTR(types)[i]; VALUE src = argv[i]; + int argtype = FIX2INT(type); - if(NUM2INT(type) == TYPE_VOIDP) { + if (argtype == TYPE_VOIDP) { if(NIL_P(src)) { src = INT2NUM(0); } else if(cPointer != CLASS_OF(src)) { @@ -126,7 +158,7 @@ function_call(int argc, VALUE argv[], VA src = rb_Integer(src); } - VALUE2GENERIC(NUM2INT(type), src, &generic_args[i]); + VALUE2GENERIC(argtype, src, &generic_args[i]); values[i] = (void *)&generic_args[i]; } values[argc] = NULL; debian/patches/CVE-2018-6914.patch0000664000000000000000000000362113265125170013252 0ustar Backported of: From e9ddf2ba41a0bffe1047e33576affd48808c5d0b Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:34:14 +0000 Subject: [PATCH] merge revision(s) 62990: Ignore file separator from tmpfile/tmpdir name. From: SHIBATA Hiroshi git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index e941152..758d2f6 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -100,10 +100,13 @@ class Dir case prefix_suffix when String prefix = prefix_suffix + prefix = prefix.delete("#{File::SEPARATOR}#{File::ALT_SEPARATOR}") suffix = "" when Array prefix = prefix_suffix[0] + prefix = prefix.delete("#{File::SEPARATOR}#{File::ALT_SEPARATOR}") suffix = prefix_suffix[1] + suffix &&= suffix.delete("#{File::SEPARATOR}#{File::ALT_SEPARATOR}") else raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}" end diff --git a/test/test_tempfile.rb b/test/test_tempfile.rb index c6cbbee..b718d24 100644 --- a/test/test_tempfile.rb +++ b/test/test_tempfile.rb @@ -319,5 +319,24 @@ puts Tempfile.new('foo').path assert_equal(0600, t.stat.mode & 0777) end end -end + TRAVERSAL_PATH = Array.new(Dir.pwd.split('/').count, '..').join('/') + Dir.pwd + '/' + + def test_open_traversal_dir + expect = Dir.glob(TRAVERSAL_PATH + '*').count + t = Tempfile.open([TRAVERSAL_PATH, 'foo']) + actual = Dir.glob(TRAVERSAL_PATH + '*').count + assert_equal expect, actual + ensure + t.close! + end + + def test_new_traversal_dir + expect = Dir.glob(TRAVERSAL_PATH + '*').count + t = Tempfile.new(TRAVERSAL_PATH + 'foo') + actual = Dir.glob(TRAVERSAL_PATH + '*').count + assert_equal expect, actual + ensure + t.close! + end +end debian/patches/110825-run-tests-verbose.patch0000664000000000000000000000144112247132667016017 0ustar Description: run tests in verbose mode Author: Lucas Nussbaum --- a/common.mk +++ b/common.mk @@ -492,15 +492,15 @@ test: test-sample btest-ruby test-knownb test-all: $(TEST_RUNNABLE)-test-all yes-test-all: PHONY - $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTS) + $(RUNRUBY) "$(srcdir)/test/runner.rb" -v --ruby="$(RUNRUBY)" $(TESTS) TESTS_BUILD = mkmf no-test-all: PHONY - $(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTS_BUILD) + $(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" -v $(TESTS_BUILD) test-ruby: $(TEST_RUNNABLE)-test-ruby no-test-ruby: PHONY yes-test-ruby: PHONY - $(RUNRUBY) "$(srcdir)/test/runner.rb" ruby + $(RUNRUBY) "$(srcdir)/test/runner.rb" -v ruby extconf: $(PREP) $(Q) $(MAKEDIRS) "$(EXTCONFDIR)" debian/patches/CVE-2018-1000075.patch0000664000000000000000000000700013260722610013453 0ustar Backported of: From 92e98bf8f810bd812f919120d4832df51bc25d83 Mon Sep 17 00:00:00 2001 From: Samuel Giddins Date: Sun, 11 Feb 2018 22:00:03 -0800 Subject: [PATCH] Strictly interpret octal fields in tar headers Any octal field that contains characters other that 0-7 will cause acn exception to be raised. This prevents a negative size from being set, which could cause an infinite loop. diff --git a/lib/rubygems/package/tar_header.rb b/lib/rubygems/package/tar_header.rb index 4f923b9..ce79fc7 100644 --- a/lib/rubygems/package/tar_header.rb +++ b/lib/rubygems/package/tar_header.rb @@ -103,37 +103,37 @@ class Gem::Package::TarHeader fields = header.unpack UNPACK_FORMAT name = fields.shift - mode = fields.shift.oct - uid = fields.shift.oct - gid = fields.shift.oct - size = fields.shift.oct - mtime = fields.shift.oct - checksum = fields.shift.oct + mode = fields.shift + uid = fields.shift + gid = fields.shift + size = fields.shift + mtime = fields.shift + checksum = fields.shift typeflag = fields.shift linkname = fields.shift magic = fields.shift - version = fields.shift.oct + version = fields.shift uname = fields.shift gname = fields.shift - devmajor = fields.shift.oct - devminor = fields.shift.oct + devmajor = fields.shift + devminor = fields.shift prefix = fields.shift new :name => name, - :mode => mode, - :uid => uid, - :gid => gid, - :size => size, - :mtime => mtime, - :checksum => checksum, + :mode => strict_oct(mode), + :uid => strict_oct(uid), + :gid => strict_oct(gid), + :size => strict_oct(size), + :mtime => strict_oct(mtime), + :checksum => strict_oct(checksum), :typeflag => typeflag, :linkname => linkname, :magic => magic, - :version => version, + :version => strict_oct(version), :uname => uname, :gname => gname, - :devmajor => devmajor, - :devminor => devminor, + :devmajor => strict_oct(devmajor), + :devminor => strict_oct(devminor), :prefix => prefix, :empty => empty @@ -159,6 +159,11 @@ class Gem::Package::TarHeader # :empty => empty end + def self.strict_oct(str) + return str.oct if str =~ /\A[0-7]*\z/ + raise ArgumentError, "#{str.inspect} is not an octal string" + end + ## # Creates a new TarHeader using +vals+ diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb index 5d85543..0ddb440 100644 --- a/test/rubygems/test_gem_package_tar_header.rb +++ b/test/rubygems/test_gem_package_tar_header.rb @@ -126,5 +126,25 @@ group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 assert_equal '012467', @tar_header.checksum end + def test_from_bad_octal + test_cases = [ + "00000006,44\000", # bogus character + "00000006789\000", # non-octal digit + "+0000001234\000", # positive sign + "-0000001000\000", # negative sign + "0x000123abc\000", # radix prefix + ] + + test_cases.each do |val| + header_s = @tar_header.to_s + # overwrite the size field + header_s[124, 12] = val + io = TempIO.new header_s + assert_raises ArgumentError do + new_header = Gem::Package::TarHeader.from io + end + end + end + end debian/patches/hurd-path-max.diff0000664000000000000000000000060412247132667014142 0ustar Debian-bug: #648055 Upstream backport from trunk: http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/addr2line.c?r1=32461&r2=33675 --- trunk/addr2line.c 2011/07/08 12:23:10 32461 +++ trunk/addr2line.c 2011/11/08 14:31:56 33675 @@ -68,6 +68,9 @@ # define ElfW(x) Elf32##_##x # endif #endif +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif typedef struct { const char *dirname; debian/patches/110720_tcltk_disable_rpath.diff0000664000000000000000000000546412247132667016310 0ustar ext/tk/extconf.rb uses rpath by default. Disable that. --- a/ext/tk/extconf.rb +++ b/ext/tk/extconf.rb @@ -614,7 +614,7 @@ def libcheck_for_tclConfig(tcldir, tkdir $INCFLAGS << " -I" << File.join(File.dirname(File.dirname(file)),"include") if is_win32? else tcllibs = append_library($libs, libname) - tcllibs = "-L#{tcldir.quote} -Wl,-R#{tcldir.quote} " + tcllibs + tcllibs = "-L#{tcldir.quote} " + tcllibs # FIX ME: avoid pathname trouble (fail to find) on MinGW. $INCFLAGS << " -I" << File.join(File.dirname(tcldir),"include") if is_win32? @@ -656,7 +656,7 @@ def libcheck_for_tclConfig(tcldir, tkdir else tklibs = append_library("", libname) #tklibs = append_library("", $1) - tklibs = "-L#{tkdir.quote} -Wl,-R#{tkdir.quote} " + tklibs + tklibs = "-L#{tkdir.quote} " + tklibs # FIX ME: avoid pathname trouble (fail to find) on MinGW. $INCFLAGS << " -I" << File.join(File.dirname(tcldir),"include") if is_win32? @@ -1125,7 +1125,7 @@ def find_tcl(tcllib, stubs, version, *op tcllibs = libs_param + " -DSTATIC_BUILD " + fname.quote else tcllibs = append_library($libs, lib_w_sufx) - tcllibs = "-L#{path.quote} -Wl,-R#{path.quote} " + tcllibs + tcllibs = "-L#{path.quote} " + tcllibs end if try_func(func, tcllibs, ["tcl.h"]) return [true, path, nil, tcllibs, *inc] @@ -1264,7 +1264,7 @@ def find_tk(tklib, stubs, version, *opt_ tklibs = libs_param + " -DSTATIC_BUILD " + fname.quote else tklibs = append_library($libs, lib_w_sufx) - tklibs = "-L#{path.quote} -Wl,-R#{path.quote} " + tklibs + tklibs = "-L#{path.quote} " + tklibs end if try_func(func, tklibs, ["tcl.h", "tk.h"]) return [true, path, nil, tklibs, *inc] @@ -1947,7 +1947,7 @@ $defs += collect_tcltk_defs(TclConfig_In # MacOS X Frameworks? if TkLib_Config["tcltk-framework"] puts("Use MacOS X Frameworks.") - ($LDFLAGS ||= "") << " -L#{TkLib_Config["tcl-build-dir"].quote} -Wl,-R#{TkLib_Config["tcl-build-dir"].quote}" if TkLib_Config["tcl-build-dir"] + ($LDFLAGS ||= "") << " -L#{TkLib_Config["tcl-build-dir"].quote}" if TkLib_Config["tcl-build-dir"] if tcl_cfg_dir TclConfig_Info['TCL_LIBS'] ||= "" @@ -1972,7 +1972,7 @@ if TkLib_Config["tcltk-framework"] end end - $LDFLAGS << " -L#{TkLib_Config["tk-build-dir"].quote} -Wl,-R#{TkLib_Config["tk-build-dir"].quote}" if TkLib_Config["tk-build-dir"] + $LDFLAGS << " -L#{TkLib_Config["tk-build-dir"].quote}" if TkLib_Config["tk-build-dir"] if tk_cfg_dir TkConfig_Info['TK_LIBS'] ||= "" debian/patches/20100829-rubygems_default_dir.diff0000664000000000000000000000535112247132667016571 0ustar --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb @@ -17,30 +17,35 @@ module Gem ## # Default home directory path to be used if an alternate value is not # specified in the environment + # + # Debian patch: + # /var/lib/gems/{ruby version} (This is the default path in Debian system) + # def self.default_dir - path = if defined? RUBY_FRAMEWORK_VERSION then - [ - File.dirname(ConfigMap[:sitedir]), - 'Gems', - ConfigMap[:ruby_version] - ] - elsif ConfigMap[:rubylibprefix] then - [ - ConfigMap[:rubylibprefix], - 'gems', - ConfigMap[:ruby_version] - ] - else - [ - ConfigMap[:libdir], - ruby_engine, - 'gems', - ConfigMap[:ruby_version] - ] - end - - @default_dir ||= File.join(*path) +# path = if defined? RUBY_FRAMEWORK_VERSION then +# [ +# File.dirname(ConfigMap[:sitedir]), +# 'Gems', +# ConfigMap[:ruby_version] +# ] +# elsif ConfigMap[:rubylibprefix] then +# [ +# ConfigMap[:rubylibprefix], +# 'gems', +# ConfigMap[:ruby_version] +# ] +# else +# [ +# ConfigMap[:libdir], +# ruby_engine, +# 'gems', +# ConfigMap[:ruby_version] +# ] +# end +# +# @default_dir ||= File.join(*path) + @default_dir ||= File.join('/', 'var', 'lib', 'gems', ConfigMap[:ruby_version]) end ## @@ -84,12 +89,16 @@ module Gem ## # The default directory for binaries + # + # Debian patch: + # /var/lib/gems/{ruby version}/bin is the default path in Debian system def self.default_bindir if defined? RUBY_FRAMEWORK_VERSION then # mac framework support - '/usr/bin' + File.join('/', 'usr', 'local', 'bin') else # generic install - ConfigMap[:bindir] + # ConfigMap[:bindir] + File.join('/', 'usr', 'local', 'bin') end end --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -521,7 +521,7 @@ class TestGem < Gem::TestCase assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Pathname.new(Gem.dir)) end - def test_self_bindir_default_dir + def est_self_bindir_default_dir default = Gem.default_dir bindir = if defined?(RUBY_FRAMEWORK_VERSION) then '/usr/bin' @@ -573,7 +573,7 @@ class TestGem < Gem::TestCase assert_nil Gem.datadir('xyzzy') end - def test_self_default_dir + def est_self_default_dir assert_match @default_dir_re, Gem.default_dir end debian/patches/CVE-2014-4975.patch0000664000000000000000000000313212425441132013244 0ustar Description: fix denial of service via buffer overrun in encodes function Origin: backport, http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=46778 Bug: https://bugs.ruby-lang.org/issues/10019 Index: ruby1.9.1-1.9.3.484/pack.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/pack.c 2014-10-31 13:04:12.784966050 -0400 +++ ruby1.9.1-1.9.3.484/pack.c 2014-10-31 13:04:12.780966019 -0400 @@ -1068,7 +1068,8 @@ static void encodes(VALUE str, const char *s, long len, int type, int tail_lf) { - char buff[4096]; + enum {buff_size = 4096, encoded_unit = 4}; + char buff[buff_size + 1]; /* +1 for tail_lf */ long i = 0; const char *trans = type == 'u' ? uu_table : b64_table; int padding; @@ -1081,7 +1082,7 @@ padding = '='; } while (len >= 3) { - while (len >= 3 && sizeof(buff)-i >= 4) { + while (len >= 3 && buff_size-i >= encoded_unit) { buff[i++] = trans[077 & (*s >> 2)]; buff[i++] = trans[077 & (((*s << 4) & 060) | ((s[1] >> 4) & 017))]; buff[i++] = trans[077 & (((s[1] << 2) & 074) | ((s[2] >> 6) & 03))]; @@ -1089,7 +1090,7 @@ s += 3; len -= 3; } - if (sizeof(buff)-i < 4) { + if (buff_size-i < encoded_unit) { rb_str_buf_cat(str, buff, i); i = 0; } @@ -1109,6 +1110,7 @@ } if (tail_lf) buff[i++] = '\n'; rb_str_buf_cat(str, buff, i); + if ((size_t)i > sizeof(buff)) rb_bug("encodes() buffer overrun"); } static const char hex_table[] = "0123456789ABCDEF"; debian/patches/940_test_thread_mutex_sync_shorter.diff0000775000000000000000000000150012247132667020410 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 940_test_thread_mutex_sync_shorter.dpatch by Lucas Nussbaum ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: test_mutex_synchronize takes a very long time on slow arches, ## DP: especially hppa (since it doesn't support NPTL). ## DP: The patch makes the test shorter by creating less concurrent ## DP: threads. Closes: #514696. @DPATCH@ Index: b/test/ruby/test_thread.rb =================================================================== --- a/test/ruby/test_thread.rb 2010-07-20 21:45:45.000000000 +0900 +++ b/test/ruby/test_thread.rb 2010-07-20 21:46:16.000000000 +0900 @@ -30,7 +30,7 @@ def test_mutex_synchronize m = Mutex.new r = 0 - max = 100 + max = 10 (1..max).map{ Thread.new{ i=0 debian/patches/CVE-2009-5147.patch0000664000000000000000000000471213121023407013240 0ustar Backport of: From 4600cf725a86ce31266153647ae5aa1197b1215b Mon Sep 17 00:00:00 2001 From: yugui Date: Mon, 11 May 2009 15:07:10 +0000 Subject: [PATCH] * ext/dl/dl.c (rb_dlhandle_initialize): prohibits DL::dlopen with a tainted name of library. Patch by sheepman . * ext/dl/dl.c (rb_dlhandle_sym): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@23405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ ext/dl/handle.c | 8 +++++--- 2 files changed, 13 insertions(+), 3 deletions(-) #diff --git a/ChangeLog b/ChangeLog #index 1de38d363881..9bacb4012588 100644 #--- a/ChangeLog #+++ b/ChangeLog #@@ -1,3 +1,11 @@ #+Mon May 11 23:14:06 2009 Yuki Sonoda (Yugui) #+ #+ * ext/dl/dl.c (rb_dlhandle_initialize): prohibits DL::dlopen #+ with a tainted name of library. #+ Patch by sheepman . #+ #+ * ext/dl/dl.c (rb_dlhandle_sym): ditto #+ # Mon May 11 22:33:46 2009 Yuki Sonoda (Yugui) # # * ext/dl/lib/dl/func.rb (DL::Function#call): prevents Index: ruby1.9.1-1.9.3.484/ext/dl/handle.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/dl/handle.c 2017-06-16 14:31:14.843636556 -0400 +++ ruby1.9.1-1.9.3.484/ext/dl/handle.c 2017-06-16 14:44:18.784875947 -0400 @@ -5,6 +5,9 @@ #include #include "dl.h" +#define SafeStringValuePtr(v) (rb_string_value(&v), rb_check_safe_obj(v), RSTRING_PTR(v)) +#define SafeStringValueCStr(v) (rb_check_safe_obj(rb_string_value(&v)), StringValueCStr(v)) + VALUE rb_cDLHandle; #ifdef _WIN32 @@ -129,11 +132,11 @@ rb_dlhandle_initialize(int argc, VALUE a cflag = RTLD_LAZY | RTLD_GLOBAL; break; case 1: - clib = NIL_P(lib) ? NULL : StringValuePtr(lib); + clib = NIL_P(lib) ? NULL : SafeStringValuePtr(lib); cflag = RTLD_LAZY | RTLD_GLOBAL; break; case 2: - clib = NIL_P(lib) ? NULL : StringValuePtr(lib); + clib = NIL_P(lib) ? NULL : SafeStringValuePtr(lib); cflag = NUM2INT(flag); break; default: @@ -268,11 +271,11 @@ rb_dlhandle_sym(VALUE self, VALUE sym) rb_raise(rb_eDLError, "closed handle"); } - return dlhandle_sym(dlhandle->ptr, StringValueCStr(sym)); + return dlhandle_sym(dlhandle->ptr, SafeStringValueCStr(sym)); } #ifndef RTLD_NEXT -#define RTLD_NEXT NULL +#define RTLD_NEXT NULL #endif #ifndef RTLD_DEFAULT #define RTLD_DEFAULT NULL debian/patches/090729_fix_Makefile_deps.diff0000664000000000000000000000153712247132667015721 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 090729_fix_Makefile_deps.dpatch by Lucas Nussbaum ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: In some cases, during 'make install', ruby1.9 will be removed ## DP: because make will detect that one of the INSNS targets need to ## DP: be regenerated. ## DP: We add a dependency between do-install-nodoc and $(PROGRAM) to ## DP: rebuild ruby1.9 if it was removed. @DPATCH@ --- a/common.mk +++ b/common.mk @@ -240,7 +240,7 @@ post-install-all:: post-install-local po install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc pre-install-nodoc:: pre-install-local pre-install-ext -do-install-nodoc: main +do-install-nodoc: main $(PROGRAM) $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) post-install-nodoc:: post-install-local post-install-ext debian/patches/CVE-2014-8090.patch0000664000000000000000000000762612433176241013255 0ustar Description: fix denial of service via XML expansion Origin: backport, http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=48406 Index: ruby1.9.1-1.9.3.484/lib/rexml/document.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rexml/document.rb 2013-03-28 05:12:42.000000000 -0400 +++ ruby1.9.1-1.9.3.484/lib/rexml/document.rb 2014-11-19 15:22:01.105113773 -0500 @@ -240,6 +240,10 @@ end end + def document + self + end + private def build( source ) Parsers::TreeParser.new( source, self ).parse Index: ruby1.9.1-1.9.3.484/lib/rexml/entity.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rexml/entity.rb 2014-11-19 15:21:52.781054477 -0500 +++ ruby1.9.1-1.9.3.484/lib/rexml/entity.rb 2014-11-19 15:22:02.889126484 -0500 @@ -157,6 +157,7 @@ # This is a set of entity constants -- the ones defined in the XML # specification. These are +gt+, +lt+, +amp+, +quot+ and +apos+. + # CAUTION: these entities does not have parent and document module EntityConst # +>+ GT = Entity.new( 'gt', '>' ) Index: ruby1.9.1-1.9.3.484/test/rexml/test_document.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rexml/test_document.rb 2014-11-19 15:21:52.781054477 -0500 +++ ruby1.9.1-1.9.3.484/test/rexml/test_document.rb 2014-11-19 15:23:07.877589692 -0500 @@ -47,6 +47,22 @@ EOF + XML_WITH_NESTED_EMPTY_ENTITY = < + + + + + + + +]> + +&a; + +EOF + XML_WITH_NESTED_PARAMETER_ENTITY = < @@ -61,6 +77,20 @@ EOF + XML_WITH_NESTED_EMPTY_PARAMETER_ENTITY = < + + + + + + + +]> + +EOF + XML_WITH_4_ENTITY_EXPANSION = < Origin: https://bugs.ruby-lang.org/attachments/7669 Last-Update: 2019-03-28 diff --git a/lib/rubygems/command_manager.rb b/lib/rubygems/command_manager.rb index 9edd550..7d047e3 100644 --- a/lib/rubygems/command_manager.rb +++ b/lib/rubygems/command_manager.rb @@ -6,6 +6,7 @@ require 'rubygems/command' require 'rubygems/user_interaction' +require 'rubygems/text' ## # The command manager registers and installs all the individual sub-commands @@ -28,6 +29,7 @@ require 'rubygems/user_interaction' class Gem::CommandManager + include Gem::Text include Gem::UserInteraction ## @@ -116,12 +118,12 @@ class Gem::CommandManager def run(args) process_args(args) rescue StandardError, Timeout::Error => ex - alert_error "While executing gem ... (#{ex.class})\n #{ex.to_s}" + alert_error clean_text("While executing gem ... (#{ex.class})\n #{ex}") ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if Gem.configuration.backtrace terminate_interaction(1) rescue Interrupt - alert_error "Interrupted" + alert_error clean_text("Interrupted") terminate_interaction(1) end @@ -139,7 +141,7 @@ class Gem::CommandManager say Gem::VERSION terminate_interaction(0) when /^-/ - alert_error "Invalid option: #{args[0]}. See 'gem --help'." + alert_error clean_text("Invalid option: #{args[0]}. See 'gem --help'.") terminate_interaction(1) else cmd_name = args.shift.downcase @@ -182,7 +184,7 @@ class Gem::CommandManager begin require "rubygems/commands/#{command_name}_command" rescue Exception => e - alert_error "Loading command: #{command_name} (#{e.class})\n #{e}" + alert_error clean_text("Loading command: #{command_name} (#{e.class})\n\t#{e}") ui.errs.puts "\t#{e.backtrace.join "\n\t"}" if Gem.configuration.backtrace end diff --git a/lib/rubygems/commands/owner_command.rb b/lib/rubygems/commands/owner_command.rb index 6ebf9aa..1d04661 100644 --- a/lib/rubygems/commands/owner_command.rb +++ b/lib/rubygems/commands/owner_command.rb @@ -1,8 +1,11 @@ require 'rubygems/command' require 'rubygems/local_remote_options' require 'rubygems/gemcutter_utilities' +require 'rubygems/text' class Gem::Commands::OwnerCommand < Gem::Command + + include Gem::Text include Gem::LocalRemoteOptions include Gem::GemcutterUtilities @@ -44,7 +47,7 @@ class Gem::Commands::OwnerCommand < Gem::Command end with_response response do |resp| - owners = YAML.load resp.body + owners = YAML.load clean_text(resp.body) say "Owners for gem: #{name}" owners.each do |owner| diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb index c0e7ee9..b8faa10 100644 --- a/lib/rubygems/gemcutter_utilities.rb +++ b/lib/rubygems/gemcutter_utilities.rb @@ -1,6 +1,10 @@ require 'rubygems/remote_fetcher' +require 'rubygems/text' module Gem::GemcutterUtilities + + include Gem::Text + OptionParser.accept Symbol do |value| value.to_sym end @@ -62,10 +66,10 @@ module Gem::GemcutterUtilities if block_given? then yield resp else - say resp.body + say clean_text(resp.body) end else - say resp.body + say clean_text(resp.body) terminate_interaction 1 end end diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 11aad89..3628e5a 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -144,7 +144,9 @@ class Gem::Installer current_home = Gem.dir current_path = Gem.paths.path - verify_spec_name + # The name and require_paths must be verified first, since it could contain + # ruby code that would be eval'ed in #ensure_loadable_spec + verify_spec verify_gem_home(options[:unpack]) Gem.use_paths gem_home, current_path # HACK: shouldn't need Gem.paths.path @@ -457,9 +459,26 @@ class Gem::Installer unpack or File.writable?(gem_home) end - def verify_spec_name - return if spec.name =~ Gem::Specification::VALID_NAME_PATTERN - raise Gem::InstallError, "#{spec} has an invalid name" + def verify_spec + unless spec.name =~ Gem::Specification::VALID_NAME_PATTERN + raise Gem::InstallError, "#{spec} has an invalid name" + end + + if spec.raw_require_paths.any?{|path| path =~ /\r\n|\r|\n/ } + raise Gem::InstallError, "#{spec} has an invalid require_paths" + end + + if spec.extensions.any?{|ext| ext =~ /\r\n|\r|\n/ } + raise Gem::InstallError, "#{spec} has an invalid extensions" + end + + unless spec.specification_version.to_s =~ /\A\d+\z/ + raise Gem::InstallError, "#{spec} has an invalid specification_version" + end + + if spec.dependencies.any? {|dep| dep.type =~ /\r\n|\r|\n/ || dep.name =~ /\r\n|\r|\n/ } + raise Gem::InstallError, "#{spec} has an invalid dependencies" + end end ## @@ -629,5 +648,31 @@ EOF def dir gem_dir.to_s end + + def pre_install_checks + verify_gem_home options[:unpack] + + # If we're forcing the install then disable security unless the security + # policy says that we only install signed gems. + @security_policy = nil if + @force and @security_policy and not @security_policy.only_signed + + # The name and require_paths must be verified first, since it could contain + # ruby code that would be eval'ed in #ensure_loadable_spec + verify_spec + + ensure_loadable_spec + + + Gem.ensure_gem_subdirectories gem_home + + return true if @force + + ensure_required_ruby_version_met + ensure_required_rubygems_version_met + ensure_dependencies_met unless @ignore_dependencies + + true + end end diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 7a9aa92..fd91063 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -2162,6 +2162,10 @@ class Gem::Specification self.platform = Gem::Platform.new @platform end + def raw_require_paths # :nodoc: + @require_paths + end + extend Gem::Deprecate deprecate :test_suite_file, :test_file, 2011, 10 diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 20c9834..89447f9 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -1049,12 +1049,16 @@ load Gem.bin_path('a', 'executable', version) end def spec.validate; end - util_build_gem spec + begin + util_build_gem spec + rescue Errno::ENOENT + skip('util_build_gem fails to build a gemfile properly, skipping test') + end gem = File.join(@gemhome, 'cache', spec.file_name) use_ui @ui do - @installer = Gem::Installer.at gem + @installer = Gem::Installer.new gem e = assert_raises Gem::InstallError do @installer.pre_install_checks end @@ -1062,6 +1066,168 @@ load Gem.bin_path('a', 'executable', version) end end + def test_pre_install_checks_malicious_name_before_eval + spec = util_spec "malicious\n::Object.const_set(:FROM_EVAL, true)#", '1' + def spec.full_name # so the spec is buildable + "malicious-1" + end + + def spec.validate(*args); end + util_build_gem spec + gem = File.join(@gemhome, 'cache', spec.file_name) + use_ui @ui do + @installer = Gem::Installer.new gem + e = assert_raises Gem::InstallError do + @installer.pre_install_checks + end + + assert_equal "# has an invalid name", e.message + end + + refute defined?(::Object::FROM_EVAL) + + end + + def test_pre_install_checks_malicious_require_paths_before_eval + + spec = util_spec "malicious", '1' + + def spec.full_name # so the spec is buildable + + "malicious-1" + + end + + def spec.validate(*args); end + + spec.require_paths = ["malicious\n``"] + + util_build_gem spec + + gem = File.join(@gemhome, 'cache', spec.file_name) + + use_ui @ui do + + @installer = Gem::Installer.new gem + + e = assert_raises Gem::InstallError do + + @installer.pre_install_checks + + end + + assert_equal "# has an invalid require_paths", e.message + + end + + end + + def test_pre_install_checks_malicious_extensions_before_eval + + skip "mswin environment disallow to create file contained the carriage return code." if Gem.win_platform? + + spec = util_spec "malicious", '1' + + def spec.full_name # so the spec is buildable + + "malicious-1" + + end + + def spec.validate(*args); end + + spec.extensions = ["malicious\n``"] + + util_build_gem spec + + gem = File.join(@gemhome, 'cache', spec.file_name) + + use_ui @ui do + + @installer = Gem::Installer.new gem + + e = assert_raises Gem::InstallError do + + @installer.pre_install_checks + + end + + assert_equal "# has an invalid extensions", e.message + + end + + end + + def test_pre_install_checks_malicious_specification_version_before_eval + + spec = util_spec "malicious", '1' + + def spec.full_name # so the spec is buildable + + "malicious-1" + + end + + def spec.validate(*args); end + + spec.specification_version = "malicious\n``" + + util_build_gem spec + + gem = File.join(@gemhome, 'cache', spec.file_name) + + use_ui @ui do + + @installer = Gem::Installer.new gem + + e = assert_raises Gem::InstallError do + + @installer.pre_install_checks + + end + + assert_equal "# has an invalid specification_version", e.message + + end + + end + + def test_pre_install_checks_malicious_dependencies_before_eval + + spec = util_spec "malicious", '1' + + def spec.full_name # so the spec is buildable + + "malicious-1" + + end + + def spec.validate(*args); end + + spec.add_dependency "b\nfoo", '> 5' + + util_build_gem spec + + gem = File.join(@gemhome, 'cache', spec.file_name) + + use_ui @ui do + + @installer = Gem::Installer.new gem + + @installer.ignore_dependencies = true + + e = assert_raises Gem::InstallError do + + @installer.pre_install_checks + + end + + assert_equal "# has an invalid dependencies", e.message + + end + + end + def test_shebang util_setup_install diff --git a/test/rubygems/test_gem_text.rb b/test/rubygems/test_gem_text.rb index cb5bc2b..5694e65 100644 --- a/test/rubygems/test_gem_text.rb +++ b/test/rubygems/test_gem_text.rb @@ -66,4 +66,10 @@ Without the wrapping, the text might not look good in the RSS feed. s = "ab" * 500_001 assert_equal "Truncating desc to 1,000,000 characters:\n#{s[0, 1_000_000]}", truncate_text(s, "desc", 1_000_000) end + + def test_clean_text + + assert_equal ".]2;nyan.", clean_text("\e]2;nyan\a") + + end end debian/patches/20121120-cve-2012-5371.diff0000664000000000000000000003676712247132667014130 0ustar Description: replace hash implementation to avoid DOS attacks This patch fixes CVE-2012-5371 Bug-Debian: http://bugs.debian.org/693024 Origin: upstream, https://github.com/ruby/ruby/commit/5e45af463cca6f062a986d5e686350e17ea653bb Backported-By: James Healy Reviewed-By: Antonio Terceiro diff --git a/common.mk b/common.mk index eb89a2b..8ce77cb 100644 --- a/common.mk +++ b/common.mk @@ -663,7 +663,8 @@ proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \ process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) \ {$(VPATH)}util.h {$(VPATH)}io.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h -random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) +random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) \ + {$(VPATH)}siphash.c {$(VPATH)}siphash.h range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) \ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h rational.$(OBJEXT): {$(VPATH)}rational.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h diff --git a/random.c b/random.c index 873f9ae..2217c81 100644 --- a/random.c +++ b/random.c @@ -1258,7 +1258,15 @@ random_s_rand(int argc, VALUE *argv, VALUE obj) return random_rand(argc, argv, rb_Random_DEFAULT); } +#define SIP_HASH_STREAMING 0 +#define sip_hash24 ruby_sip_hash24 +#include "siphash.c" + static st_index_t hashseed; +static union { + uint8_t key[16]; + uint32_t u32[(16 * sizeof(uint8_t) - 1) / sizeof(uint32_t)]; +} sipseed; static VALUE init_randomseed(struct MT *mt, unsigned int initial[DEFAULT_SEED_CNT]) @@ -1278,6 +1286,7 @@ Init_RandomSeed(void) unsigned int initial[DEFAULT_SEED_CNT]; struct MT *mt = &r->mt; VALUE seed = init_randomseed(mt, initial); + int i; hashseed = genrand_int32(mt); #if SIZEOF_ST_INDEX_T*CHAR_BIT > 4*8 @@ -1293,6 +1302,9 @@ Init_RandomSeed(void) hashseed |= genrand_int32(mt); #endif + for (i = 0; i < numberof(sipseed.u32); ++i) + sipseed.u32[i] = genrand_int32(mt); + rb_global_variable(&r->seed); r->seed = seed; } @@ -1303,6 +1315,17 @@ rb_hash_start(st_index_t h) return st_hash_start(hashseed + h); } +st_index_t +rb_memhash(const void *ptr, long len) +{ + sip_uint64_t h = sip_hash24(sipseed.key, ptr, len); +#ifdef HAVE_UINT64_T + return (st_index_t)h; +#else + return (st_index_t)(h.u32[0] ^ h.u32[1]); +#endif +} + static void Init_RandomSeed2(void) { diff --git a/siphash.c b/siphash.c new file mode 100644 index 0000000..c100b14 --- /dev/null +++ b/siphash.c @@ -0,0 +1,483 @@ +#include +#include +#include "siphash.h" +#ifndef SIP_HASH_STREAMING + #define SIP_HASH_STREAMING 1 +#endif + +#ifdef _WIN32 + #define BYTE_ORDER __LITTLE_ENDIAN +#elif !defined BYTE_ORDER + #include +#endif +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#endif +#ifndef BIG_ENDIAN +#define BIG_ENDIAN __BIG_ENDIAN +#endif + +#if BYTE_ORDER == LITTLE_ENDIAN + #define lo u32[0] + #define hi u32[1] +#elif BYTE_ORDER == BIG_ENDIAN + #define hi u32[0] + #define lo u32[1] +#else + #error "Only strictly little or big endian supported" +#endif + +#ifndef UNALIGNED_WORD_ACCESS +# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ + defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD86) || \ + defined(__mc68020__) +# define UNALIGNED_WORD_ACCESS 1 +# endif +#endif +#ifndef UNALIGNED_WORD_ACCESS +# define UNALIGNED_WORD_ACCESS 0 +#endif + +#define U8TO32_LE(p) \ + (((uint32_t)((p)[0]) ) | ((uint32_t)((p)[1]) << 8) | \ + ((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24)) \ + +#define U32TO8_LE(p, v) \ +do { \ + (p)[0] = (uint8_t)((v) ); \ + (p)[1] = (uint8_t)((v) >> 8); \ + (p)[2] = (uint8_t)((v) >> 16); \ + (p)[3] = (uint8_t)((v) >> 24); \ +} while (0) + +#ifdef HAVE_UINT64_T +#define U8TO64_LE(p) \ + ((uint64_t)U8TO32_LE(p) | ((uint64_t)U8TO32_LE((p) + 4)) << 32 ) + +#define U64TO8_LE(p, v) \ +do { \ + U32TO8_LE((p), (uint32_t)((v) )); \ + U32TO8_LE((p) + 4, (uint32_t)((v) >> 32)); \ +} while (0) + +#define ROTL64(v, s) \ + ((v) << (s)) | ((v) >> (64 - (s))) + +#define ROTL64_TO(v, s) ((v) = ROTL64((v), (s))) + +#define ADD64_TO(v, s) ((v) += (s)) +#define XOR64_TO(v, s) ((v) ^= (s)) +#define XOR64_INT(v, x) ((v) ^= (x)) +#else +#define U8TO64_LE(p) u8to64_le(p) +static inline uint64_t +u8to64_le(const uint8_t *p) +{ + uint64_t ret; + ret.lo = U8TO32_LE(p); + ret.hi = U8TO32_LE(p + 4); + return ret; +} + +#define U64TO8_LE(p, v) u64to8_le(p, v) +static inline void +u64to8_le(uint8_t *p, uint64_t v) +{ + U32TO8_LE(p, v.lo); + U32TO8_LE(p + 4, v.hi); +} + +#define ROTL64_TO(v, s) ((s) > 32 ? rotl64_swap(rotl64_to(&(v), (s) - 32)) : \ + (s) == 32 ? rotl64_swap(&(v)) : rotl64_to(&(v), (s))) +static inline uint64_t * +rotl64_to(uint64_t *v, unsigned int s) +{ + uint32_t uhi = (v->hi << s) | (v->lo >> (32 - s)); + uint32_t ulo = (v->lo << s) | (v->hi >> (32 - s)); + v->hi = uhi; + v->lo = ulo; + return v; +} + +static inline uint64_t * +rotl64_swap(uint64_t *v) +{ + uint32_t t = v->lo; + v->lo = v->hi; + v->hi = t; + return v; +} + +#define ADD64_TO(v, s) add64_to(&(v), (s)) +static inline uint64_t * +add64_to(uint64_t *v, const uint64_t s) +{ + v->lo += s.lo; + v->hi += s.hi; + if (v->lo < s.lo) v->hi++; + return v; +} + +#define XOR64_TO(v, s) xor64_to(&(v), (s)) +static inline uint64_t * +xor64_to(uint64_t *v, const uint64_t s) +{ + v->lo ^= s.lo; + v->hi ^= s.hi; + return v; +} + +#define XOR64_INT(v, x) ((v).lo ^= (x)) +#endif + +static const union { + char bin[32]; + uint64_t u64[4]; +} sip_init_state_bin = {"uespemos""modnarod""arenegyl""setybdet"}; +#define sip_init_state sip_init_state_bin.u64 + +#if SIP_HASH_STREAMING +struct sip_interface_st { + void (*init)(sip_state *s, const uint8_t *key); + void (*update)(sip_state *s, const uint8_t *data, size_t len); + void (*final)(sip_state *s, uint64_t *digest); +}; + +static void int_sip_init(sip_state *state, const uint8_t *key); +static void int_sip_update(sip_state *state, const uint8_t *data, size_t len); +static void int_sip_final(sip_state *state, uint64_t *digest); + +static const sip_interface sip_methods = { + int_sip_init, + int_sip_update, + int_sip_final +}; +#endif /* SIP_HASH_STREAMING */ + +#define SIP_COMPRESS(v0, v1, v2, v3) \ +do { \ + ADD64_TO((v0), (v1)); \ + ADD64_TO((v2), (v3)); \ + ROTL64_TO((v1), 13); \ + ROTL64_TO((v3), 16); \ + XOR64_TO((v1), (v0)); \ + XOR64_TO((v3), (v2)); \ + ROTL64_TO((v0), 32); \ + ADD64_TO((v2), (v1)); \ + ADD64_TO((v0), (v3)); \ + ROTL64_TO((v1), 17); \ + ROTL64_TO((v3), 21); \ + XOR64_TO((v1), (v2)); \ + XOR64_TO((v3), (v0)); \ + ROTL64_TO((v2), 32); \ +} while(0) + +#if SIP_HASH_STREAMING +static void +int_sip_dump(sip_state *state) +{ + int v; + + for (v = 0; v < 4; v++) { +#if HAVE_UINT64_T + printf("v%d: %" PRIx64 "\n", v, state->v[v]); +#else + printf("v%d: %" PRIx32 "%.8" PRIx32 "\n", v, state->v[v].hi, state->v[v].lo); +#endif + } +} + +static void +int_sip_init(sip_state *state, const uint8_t key[16]) +{ + uint64_t k0, k1; + + k0 = U8TO64_LE(key); + k1 = U8TO64_LE(key + sizeof(uint64_t)); + + state->v[0] = k0; XOR64_TO(state->v[0], sip_init_state[0]); + state->v[1] = k1; XOR64_TO(state->v[1], sip_init_state[1]); + state->v[2] = k0; XOR64_TO(state->v[2], sip_init_state[2]); + state->v[3] = k1; XOR64_TO(state->v[3], sip_init_state[3]); +} + +static inline void +int_sip_round(sip_state *state, int n) +{ + int i; + + for (i = 0; i < n; i++) { + SIP_COMPRESS(state->v[0], state->v[1], state->v[2], state->v[3]); + } +} + +static inline void +int_sip_update_block(sip_state *state, uint64_t m) +{ + XOR64_TO(state->v[3], m); + int_sip_round(state, state->c); + XOR64_TO(state->v[0], m); +} + +static inline void +int_sip_pre_update(sip_state *state, const uint8_t **pdata, size_t *plen) +{ + int to_read; + uint64_t m; + + if (!state->buflen) return; + + to_read = sizeof(uint64_t) - state->buflen; + memcpy(state->buf + state->buflen, *pdata, to_read); + m = U8TO64_LE(state->buf); + int_sip_update_block(state, m); + *pdata += to_read; + *plen -= to_read; + state->buflen = 0; +} + +static inline void +int_sip_post_update(sip_state *state, const uint8_t *data, size_t len) +{ + uint8_t r = len % sizeof(uint64_t); + if (r) { + memcpy(state->buf, data + len - r, r); + state->buflen = r; + } +} + +static void +int_sip_update(sip_state *state, const uint8_t *data, size_t len) +{ + uint64_t *end; + uint64_t *data64; + + state->msglen_byte = state->msglen_byte + (len % 256); + data64 = (uint64_t *) data; + + int_sip_pre_update(state, &data, &len); + + end = data64 + (len / sizeof(uint64_t)); + +#if BYTE_ORDER == LITTLE_ENDIAN + while (data64 != end) { + int_sip_update_block(state, *data64++); + } +#elif BYTE_ORDER == BIG_ENDIAN + { + uint64_t m; + uint8_t *data8 = data; + for (; data8 != (uint8_t *) end; data8 += sizeof(uint64_t)) { + m = U8TO64_LE(data8); + int_sip_update_block(state, m); + } + } +#endif + + int_sip_post_update(state, data, len); +} + +static inline void +int_sip_pad_final_block(sip_state *state) +{ + int i; + /* pad with 0's and finalize with msg_len mod 256 */ + for (i = state->buflen; i < sizeof(uint64_t); i++) { + state->buf[i] = 0x00; + } + state->buf[sizeof(uint64_t) - 1] = state->msglen_byte; +} + +static void +int_sip_final(sip_state *state, uint64_t *digest) +{ + uint64_t m; + + int_sip_pad_final_block(state); + + m = U8TO64_LE(state->buf); + int_sip_update_block(state, m); + + XOR64_INT(state->v[2], 0xff); + + int_sip_round(state, state->d); + + *digest = state->v[0]; + XOR64_TO(*digest, state->v[1]); + XOR64_TO(*digest, state->v[2]); + XOR64_TO(*digest, state->v[3]); +} + +sip_hash * +sip_hash_new(const uint8_t key[16], int c, int d) +{ + sip_hash *h = NULL; + + if (!(h = (sip_hash *) malloc(sizeof(sip_hash)))) return NULL; + return sip_hash_init(h, key, c, d); +} + +sip_hash * +sip_hash_init(sip_hash *h, const uint8_t key[16], int c, int d) +{ + h->state->c = c; + h->state->d = d; + h->state->buflen = 0; + h->state->msglen_byte = 0; + h->methods = &sip_methods; + h->methods->init(h->state, key); + return h; +} + +int +sip_hash_update(sip_hash *h, const uint8_t *msg, size_t len) +{ + h->methods->update(h->state, msg, len); + return 1; +} + +int +sip_hash_final(sip_hash *h, uint8_t **digest, size_t* len) +{ + uint64_t digest64; + uint8_t *ret; + + h->methods->final(h->state, &digest64); + if (!(ret = (uint8_t *)malloc(sizeof(uint64_t)))) return 0; + U64TO8_LE(ret, digest64); + *len = sizeof(uint64_t); + *digest = ret; + + return 1; +} + +int +sip_hash_final_integer(sip_hash *h, uint64_t *digest) +{ + h->methods->final(h->state, digest); + return 1; +} + +int +sip_hash_digest(sip_hash *h, const uint8_t *data, size_t data_len, uint8_t **digest, size_t *digest_len) +{ + if (!sip_hash_update(h, data, data_len)) return 0; + return sip_hash_final(h, digest, digest_len); +} + +int +sip_hash_digest_integer(sip_hash *h, const uint8_t *data, size_t data_len, uint64_t *digest) +{ + if (!sip_hash_update(h, data, data_len)) return 0; + return sip_hash_final_integer(h, digest); +} + +void +sip_hash_free(sip_hash *h) +{ + free(h); +} + +void +sip_hash_dump(sip_hash *h) +{ + int_sip_dump(h->state); +} +#endif /* SIP_HASH_STREAMING */ + +#define SIP_2_ROUND(m, v0, v1, v2, v3) \ +do { \ + XOR64_TO((v3), (m)); \ + SIP_COMPRESS(v0, v1, v2, v3); \ + SIP_COMPRESS(v0, v1, v2, v3); \ + XOR64_TO((v0), (m)); \ +} while (0) + +uint64_t +sip_hash24(const uint8_t key[16], const uint8_t *data, size_t len) +{ + uint64_t k0, k1; + uint64_t v0, v1, v2, v3; + uint64_t m, last; + const uint8_t *end = data + len - (len % sizeof(uint64_t)); + + k0 = U8TO64_LE(key); + k1 = U8TO64_LE(key + sizeof(uint64_t)); + + v0 = k0; XOR64_TO(v0, sip_init_state[0]); + v1 = k1; XOR64_TO(v1, sip_init_state[1]); + v2 = k0; XOR64_TO(v2, sip_init_state[2]); + v3 = k1; XOR64_TO(v3, sip_init_state[3]); + +#if BYTE_ORDER == LITTLE_ENDIAN && UNALIGNED_WORD_ACCESS + { + uint64_t *data64 = (uint64_t *)data; + while (data64 != (uint64_t *) end) { + m = *data64++; + SIP_2_ROUND(m, v0, v1, v2, v3); + } + } +#elif BYTE_ORDER == BIG_ENDIAN + for (; data != end; data += sizeof(uint64_t)) { + m = U8TO64_LE(data); + SIP_2_ROUND(m, v0, v1, v2, v3); + } +#endif + +#ifdef HAVE_UINT64_T + last = (uint64_t)len << 56; +#define OR_BYTE(n) (last |= ((uint64_t) end[n]) << ((n) * 8)) +#else + last.hi = len << 24; + last.lo = 0; +#define OR_BYTE(n) do { \ + if (n >= 4) \ + last.hi |= ((uint32_t) end[n]) << ((n) >= 4 ? (n) * 8 - 32 : 0); \ + else \ + last.lo |= ((uint32_t) end[n]) << ((n) >= 4 ? 0 : (n) * 8); \ + } while (0) +#endif + + switch (len % sizeof(uint64_t)) { + case 7: + OR_BYTE(6); + case 6: + OR_BYTE(5); + case 5: + OR_BYTE(4); + case 4: +#if BYTE_ORDER == LITTLE_ENDIAN && UNALIGNED_WORD_ACCESS + #if HAVE_UINT64_T + last |= (uint64_t) ((uint32_t *) end)[0]; + #else + last.lo |= ((uint32_t *) end)[0]; + #endif + break; +#elif BYTE_ORDER == BIG_ENDIAN + OR_BYTE(3); +#endif + case 3: + OR_BYTE(2); + case 2: + OR_BYTE(1); + case 1: + OR_BYTE(0); + break; + case 0: + break; + } + + SIP_2_ROUND(last, v0, v1, v2, v3); + + XOR64_INT(v2, 0xff); + + SIP_COMPRESS(v0, v1, v2, v3); + SIP_COMPRESS(v0, v1, v2, v3); + SIP_COMPRESS(v0, v1, v2, v3); + SIP_COMPRESS(v0, v1, v2, v3); + + XOR64_TO(v0, v1); + XOR64_TO(v0, v2); + XOR64_TO(v0, v3); + return v0; +} diff --git a/siphash.h b/siphash.h new file mode 100644 index 0000000..3f39884 --- /dev/null +++ b/siphash.h @@ -0,0 +1,48 @@ +#ifndef SIPHASH_H +#define SIPHASH_H 1 +#include +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_INTTYPES_H +#include +#endif + +#ifndef HAVE_UINT64_T +typedef struct { + uint32_t u32[2]; +} sip_uint64_t; +#define uint64_t sip_uint64_t +#else +typedef uint64_t sip_uint64_t; +#endif + +typedef struct { + int c; + int d; + uint64_t v[4]; + uint8_t buf[sizeof(uint64_t)]; + uint8_t buflen; + uint8_t msglen_byte; +} sip_state; + +typedef struct sip_interface_st sip_interface; + +typedef struct { + sip_state state[1]; + const sip_interface *methods; +} sip_hash; + +sip_hash *sip_hash_new(const uint8_t key[16], int c, int d); +sip_hash *sip_hash_init(sip_hash *h, const uint8_t key[16], int c, int d); +int sip_hash_update(sip_hash *h, const uint8_t *data, size_t len); +int sip_hash_final(sip_hash *h, uint8_t **digest, size_t *len); +int sip_hash_final_integer(sip_hash *h, uint64_t *digest); +int sip_hash_digest(sip_hash *h, const uint8_t *data, size_t data_len, uint8_t **digest, size_t *digest_len); +int sip_hash_digest_integer(sip_hash *h, const uint8_t *data, size_t data_len, uint64_t *digest); +void sip_hash_free(sip_hash *h); +void sip_hash_dump(sip_hash *h); + +uint64_t sip_hash24(const uint8_t key[16], const uint8_t *data, size_t len); + +#endif diff --git a/string.c b/string.c index c770215..0138dce 100644 --- a/string.c +++ b/string.c @@ -2161,12 +2161,6 @@ rb_str_prepend(VALUE str, VALUE str2) } st_index_t -rb_memhash(const void *ptr, long len) -{ - return st_hash(ptr, len, rb_hash_start((st_index_t)len)); -} - -st_index_t rb_str_hash(VALUE str) { int e = ENCODING_GET(str); debian/patches/CVE-2017-17790.patch0000664000000000000000000000166313224753551013346 0ustar Backported of: From e7464561b5151501beb356fc750d5dd1a88014f7 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 20 Dec 2017 04:18:31 +0000 Subject: [PATCH] Fixed command Injection * resolv.rb (Resolv::Hosts#lazy_initialize): fixed potential command Injection in Hosts::new() by use of Kernel#open. [Fix GH-1777] [ruby-core:84347] [Bug #14205] From: Drigg3r git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e diff --git a/lib/resolv.rb b/lib/resolv.rb index 1e18893..66663b2 100644 --- a/lib/resolv.rb +++ b/lib/resolv.rb @@ -186,7 +186,7 @@ class Resolv unless @initialized @name2addr = {} @addr2name = {} - open(@filename) {|f| + File.open(@filename, 'rb') {|f| f.each {|line| line.sub!(/#.*/, '') addr, hostname, *aliases = line.split(/\s+/) debian/patches/CVE-2018-1000078.patch0000664000000000000000000000171513260717567013504 0ustar Backported of: From 66a28b9275551384fdab45f3591a82d6b59952cb Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Thu, 1 Feb 2018 23:04:33 -0500 Subject: [PATCH] Fix 289313 diff --git a/lib/rubygems/server.rb b/lib/rubygems/server.rb index 47fa7c5..ca2c4d1 100644 --- a/lib/rubygems/server.rb +++ b/lib/rubygems/server.rb @@ -619,7 +619,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } "only_one_executable" => (executables && executables.size == 1), "full_name" => spec.full_name, "has_deps" => !deps.empty?, - "homepage" => spec.homepage, + "homepage" => (URI.parse(spec.homepage).is_a?(URI::HTTP) || URI.parse(spec.homepage).is_a?(URI::HTTPS)) ? spec.homepage : ".", "name" => spec.name, "rdoc_installed" => Gem::DocManager.new(spec).rdoc_installed?, "summary" => spec.summary, debian/patches/CVE-2016-2337.patch0000664000000000000000000000205113121024114013222 0ustar From a2b8925a94a672235ca6a16e584bf09026a957ab Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 2 Aug 2015 01:27:31 +0000 Subject: [PATCH] tcltklib.c: check argument * ext/tk/tcltklib.c (ip_cancel_eval_core): check argument type and length. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/tk/tcltklib.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: ruby1.9.1-1.9.3.484/ext/tk/tcltklib.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/tk/tcltklib.c 2017-06-16 14:49:45.876730993 -0400 +++ ruby1.9.1-1.9.3.484/ext/tk/tcltklib.c 2017-06-16 14:49:45.872730945 -0400 @@ -7781,7 +7781,8 @@ ip_cancel_eval_core(interp, msg, flag) if (NIL_P(msg)) { msg_obj = NULL; } else { - msg_obj = Tcl_NewStringObj(RSTRING_PTR(msg), RSTRING_LEN(msg)); + char *s = StringValuePtr(msg); + msg_obj = Tcl_NewStringObj(s, RSTRING_LENINT(msg)); Tcl_IncrRefCount(msg_obj); } debian/patches/CVE-2017-0898-10748-14033-14064.patch0000664000000000000000000003164413164715421015073 0ustar Description: backport Ruby 2.2.8 fixes to 1.9.1 This patch was generated with: . diff -x version.h -x revision.h -x ChangeLog -x rubygems -x psych -ru ruby-2.2.7 ruby-2.2.8 . on extracted tarballs of Ruby 2.2.7 and Ruby 2.2.8, then fuzzy-matched to apply on the Debian package Origin: upstream Reviewed-by: anarcat@debian.org Last-updated: 2017-09-26 Index: ruby1.9.1-1.9.3.484/ext/json/generator/generator.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/json/generator/generator.c +++ ruby1.9.1-1.9.3.484/ext/json/generator/generator.c @@ -288,7 +288,7 @@ static char *fstrndup(const char *ptr, u char *result; if (len <= 0) return NULL; result = ALLOC_N(char, len); - memccpy(result, ptr, 0, len); + memcpy(result, ptr, len); return result; } @@ -1091,7 +1091,7 @@ static VALUE cState_indent_set(VALUE sel } } else { if (state->indent) ruby_xfree(state->indent); - state->indent = strdup(RSTRING_PTR(indent)); + state->indent = fstrndup(RSTRING_PTR(indent), len); state->indent_len = len; } return Qnil; @@ -1129,7 +1129,7 @@ static VALUE cState_space_set(VALUE self } } else { if (state->space) ruby_xfree(state->space); - state->space = strdup(RSTRING_PTR(space)); + state->space = fstrndup(RSTRING_PTR(space), len); state->space_len = len; } return Qnil; @@ -1165,7 +1165,7 @@ static VALUE cState_space_before_set(VAL } } else { if (state->space_before) ruby_xfree(state->space_before); - state->space_before = strdup(RSTRING_PTR(space_before)); + state->space_before = fstrndup(RSTRING_PTR(space_before), len); state->space_before_len = len; } return Qnil; @@ -1202,7 +1202,7 @@ static VALUE cState_object_nl_set(VALUE } } else { if (state->object_nl) ruby_xfree(state->object_nl); - state->object_nl = strdup(RSTRING_PTR(object_nl)); + state->object_nl = fstrndup(RSTRING_PTR(object_nl), len); state->object_nl_len = len; } return Qnil; @@ -1237,7 +1237,7 @@ static VALUE cState_array_nl_set(VALUE s } } else { if (state->array_nl) ruby_xfree(state->array_nl); - state->array_nl = strdup(RSTRING_PTR(array_nl)); + state->array_nl = fstrndup(RSTRING_PTR(array_nl), len); state->array_nl_len = len; } return Qnil; Index: ruby1.9.1-1.9.3.484/ext/json/generator/generator.h =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/json/generator/generator.h +++ ruby1.9.1-1.9.3.484/ext/json/generator/generator.h @@ -1,7 +1,6 @@ #ifndef _GENERATOR_H_ #define _GENERATOR_H_ -#include #include #include Index: ruby1.9.1-1.9.3.484/ext/openssl/ossl_asn1.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/openssl/ossl_asn1.c +++ ruby1.9.1-1.9.3.484/ext/openssl/ossl_asn1.c @@ -871,19 +871,18 @@ int_ossl_asn1_decode0_cons(unsigned char { VALUE value, asn1data, ary; int infinite; - long off = *offset; + long available_len, off = *offset; infinite = (j == 0x21); ary = rb_ary_new(); - while (length > 0 || infinite) { + available_len = infinite ? max_len : length; + while (available_len > 0) { long inner_read = 0; - value = ossl_asn1_decode0(pp, max_len, &off, depth + 1, yield, &inner_read); + value = ossl_asn1_decode0(pp, available_len, &off, depth + 1, yield, &inner_read); *num_read += inner_read; - max_len -= inner_read; + available_len -= inner_read; rb_ary_push(ary, value); - if (length > 0) - length -= inner_read; if (infinite && NUM2INT(ossl_asn1_get_tag(value)) == V_ASN1_EOC && @@ -974,7 +973,7 @@ ossl_asn1_decode0(unsigned char **pp, lo if(j & V_ASN1_CONSTRUCTED) { *pp += hlen; off += hlen; - asn1data = int_ossl_asn1_decode0_cons(pp, length, len, &off, depth, yield, j, tag, tag_class, &inner_read); + asn1data = int_ossl_asn1_decode0_cons(pp, length - hlen, len, &off, depth, yield, j, tag, tag_class, &inner_read); inner_read += hlen; } else { Index: ruby1.9.1-1.9.3.484/lib/webrick/httpstatus.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/webrick/httpstatus.rb +++ ruby1.9.1-1.9.3.484/lib/webrick/httpstatus.rb @@ -20,10 +20,6 @@ module WEBrick ## # Root of the HTTP status class hierarchy class Status < StandardError - def initialize(*args) # :nodoc: - args[0] = AccessLog.escape(args[0]) unless args.empty? - super(*args) - end class << self attr_reader :code, :reason_phrase # :nodoc: end Index: ruby1.9.1-1.9.3.484/lib/webrick/log.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/webrick/log.rb +++ ruby1.9.1-1.9.3.484/lib/webrick/log.rb @@ -98,10 +98,10 @@ module WEBrick # * Otherwise it will return +arg+.inspect. def format(arg) if arg.is_a?(Exception) - "#{arg.class}: #{arg.message}\n\t" << + "#{arg.class}: #{AccessLog.escape(arg.message)}\n\t" << arg.backtrace.join("\n\t") << "\n" elsif arg.respond_to?(:to_str) - arg.to_str + AccessLog.escape(arg.to_str) else arg.inspect end Index: ruby1.9.1-1.9.3.484/sprintf.c =================================================================== --- ruby1.9.1-1.9.3.484.orig/sprintf.c +++ ruby1.9.1-1.9.3.484/sprintf.c @@ -1007,6 +1007,8 @@ rb_str_format(int argc, const VALUE *arg fval = RFLOAT_VALUE(rb_Float(val)); if (isnan(fval) || isinf(fval)) { const char *expr; + int elen; + char sign = '\0'; if (isnan(fval)) { expr = "NaN"; @@ -1015,33 +1017,28 @@ rb_str_format(int argc, const VALUE *arg expr = "Inf"; } need = (int)strlen(expr); - if ((!isnan(fval) && fval < 0.0) || (flags & FPLUS)) - need++; + elen = need; + i = 0; + if (!isnan(fval) && fval < 0.0) + sign = '-'; + else if (flags & (FPLUS|FSPACE)) + sign = (flags & FPLUS) ? '+' : ' '; + if (sign) + ++need; if ((flags & FWIDTH) && need < width) need = width; - CHECK(need + 1); - snprintf(&buf[blen], need + 1, "%*s", need, ""); + FILL(' ', need); if (flags & FMINUS) { - if (!isnan(fval) && fval < 0.0) - buf[blen++] = '-'; - else if (flags & FPLUS) - buf[blen++] = '+'; - else if (flags & FSPACE) - blen++; - memcpy(&buf[blen], expr, strlen(expr)); + if (sign) + buf[blen - need--] = sign; + memcpy(&buf[blen - need], expr, elen); } else { - if (!isnan(fval) && fval < 0.0) - buf[blen + need - strlen(expr) - 1] = '-'; - else if (flags & FPLUS) - buf[blen + need - strlen(expr) - 1] = '+'; - else if ((flags & FSPACE) && need > width) - blen++; - memcpy(&buf[blen + need - strlen(expr)], expr, - strlen(expr)); + if (sign) + buf[blen - elen - 1] = sign; + memcpy(&buf[blen - elen], expr, elen); } - blen += strlen(&buf[blen]); break; } Index: ruby1.9.1-1.9.3.484/test/openssl/test_asn1.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/test_asn1.rb +++ ruby1.9.1-1.9.3.484/test/openssl/test_asn1.rb @@ -595,6 +595,29 @@ rEzBQ0F9dUyqQ9gyRg8KHhDfv9HzT1d/rnUZMkoo assert_equal(false, asn1.value[3].infinite_length) end + def test_decode_constructed_overread + test = %w{ 31 06 31 02 30 02 05 00 } + # ^ <- invalid + raw = [test.join].pack("H*") + ret = [] + assert_raise(OpenSSL::ASN1::ASN1Error) { + OpenSSL::ASN1.traverse(raw) { |x| ret << x } + } + assert_equal 2, ret.size + assert_equal 17, ret[0][6] + assert_equal 17, ret[1][6] + + test = %w{ 31 80 30 03 00 00 } + # ^ <- invalid + raw = [test.join].pack("H*") + ret = [] + assert_raise(OpenSSL::ASN1::ASN1Error) { + OpenSSL::ASN1.traverse(raw) { |x| ret << x } + } + assert_equal 1, ret.size + assert_equal 17, ret[0][6] + end + private def assert_universal(tag, asn1) Index: ruby1.9.1-1.9.3.484/test/ruby/test_sprintf.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/ruby/test_sprintf.rb +++ ruby1.9.1-1.9.3.484/test/ruby/test_sprintf.rb @@ -83,6 +83,18 @@ class TestSprintf < Test::Unit::TestCase assert_equal("NaN", sprintf("%-f", nan)) assert_equal("+NaN", sprintf("%+f", nan)) + assert_equal("NaN", sprintf("%3f", nan)) + assert_equal("NaN", sprintf("%-3f", nan)) + assert_equal("+NaN", sprintf("%+3f", nan)) + + assert_equal(" NaN", sprintf("% 3f", nan)) + assert_equal(" NaN", sprintf("%- 3f", nan)) + assert_equal("+NaN", sprintf("%+ 3f", nan)) + + assert_equal(" NaN", sprintf("% 03f", nan)) + assert_equal(" NaN", sprintf("%- 03f", nan)) + assert_equal("+NaN", sprintf("%+ 03f", nan)) + assert_equal(" NaN", sprintf("%8f", nan)) assert_equal("NaN ", sprintf("%-8f", nan)) assert_equal(" +NaN", sprintf("%+8f", nan)) @@ -106,6 +118,26 @@ class TestSprintf < Test::Unit::TestCase assert_equal("Inf", sprintf("%-f", inf)) assert_equal("+Inf", sprintf("%+f", inf)) + assert_equal(" Inf", sprintf("% f", inf)) + assert_equal(" Inf", sprintf("%- f", inf)) + assert_equal("+Inf", sprintf("%+ f", inf)) + + assert_equal(" Inf", sprintf("% 0f", inf)) + assert_equal(" Inf", sprintf("%- 0f", inf)) + assert_equal("+Inf", sprintf("%+ 0f", inf)) + + assert_equal("Inf", sprintf("%3f", inf)) + assert_equal("Inf", sprintf("%-3f", inf)) + assert_equal("+Inf", sprintf("%+3f", inf)) + + assert_equal(" Inf", sprintf("% 3f", inf)) + assert_equal(" Inf", sprintf("%- 3f", inf)) + assert_equal("+Inf", sprintf("%+ 3f", inf)) + + assert_equal(" Inf", sprintf("% 03f", inf)) + assert_equal(" Inf", sprintf("%- 03f", inf)) + assert_equal("+Inf", sprintf("%+ 03f", inf)) + assert_equal(" Inf", sprintf("%8f", inf)) assert_equal("Inf ", sprintf("%-8f", inf)) assert_equal(" +Inf", sprintf("%+8f", inf)) @@ -126,6 +158,26 @@ class TestSprintf < Test::Unit::TestCase assert_equal("-Inf", sprintf("%-f", -inf)) assert_equal("-Inf", sprintf("%+f", -inf)) + assert_equal("-Inf", sprintf("% f", -inf)) + assert_equal("-Inf", sprintf("%- f", -inf)) + assert_equal("-Inf", sprintf("%+ f", -inf)) + + assert_equal("-Inf", sprintf("% 0f", -inf)) + assert_equal("-Inf", sprintf("%- 0f", -inf)) + assert_equal("-Inf", sprintf("%+ 0f", -inf)) + + assert_equal("-Inf", sprintf("%4f", -inf)) + assert_equal("-Inf", sprintf("%-4f", -inf)) + assert_equal("-Inf", sprintf("%+4f", -inf)) + + assert_equal("-Inf", sprintf("% 4f", -inf)) + assert_equal("-Inf", sprintf("%- 4f", -inf)) + assert_equal("-Inf", sprintf("%+ 4f", -inf)) + + assert_equal("-Inf", sprintf("% 04f", -inf)) + assert_equal("-Inf", sprintf("%- 04f", -inf)) + assert_equal("-Inf", sprintf("%+ 04f", -inf)) + assert_equal(" -Inf", sprintf("%8f", -inf)) assert_equal("-Inf ", sprintf("%-8f", -inf)) assert_equal(" -Inf", sprintf("%+8f", -inf)) Index: ruby1.9.1-1.9.3.484/test/webrick/test_httpauth.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/webrick/test_httpauth.rb +++ ruby1.9.1-1.9.3.484/test/webrick/test_httpauth.rb @@ -80,6 +80,42 @@ class TestWEBrickHTTPAuth < Test::Unit:: tmpfile.close(true) end + def test_bad_username_with_control_characters + log_tester = lambda {|log, access_log| + assert_equal(2, log.length) + assert_match(/ERROR Basic WEBrick's realm: foo\\ebar: the user is not allowed./, log[0]) + assert_match(/ERROR WEBrick::HTTPStatus::Unauthorized/, log[1]) + } + TestWEBrick.start_httpserver({}, log_tester) {|server, addr, port, log| + realm = "WEBrick's realm" + path = "/basic_auth" + + Tempfile.create("test_webrick_auth") {|tmpfile| + tmpfile.close + tmp_pass = WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path) + tmp_pass.set_passwd(realm, "webrick", "supersecretpassword") + tmp_pass.set_passwd(realm, "foo", "supersecretpassword") + tmp_pass.flush + + htpasswd = WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path) + users = [] + htpasswd.each{|user, pass| users << user } + server.mount_proc(path){|req, res| + auth = WEBrick::HTTPAuth::BasicAuth.new( + :Realm => realm, :UserDB => htpasswd, + :Logger => server.logger + ) + auth.authenticate(req, res) + res.body = "hoge" + } + http = Net::HTTP.new(addr, port) + g = Net::HTTP::Get.new(path) + g.basic_auth("foo\ebar", "passwd") + http.request(g){|res| assert_not_equal("hoge", res.body, log.call) } + } + } + end + DIGESTRES_ = / ([a-zA-z\-]+) [\s\t]*(?:\r\n[\s\t]*)* debian/patches/20100829-rubygems_disable_update_system.diff0000664000000000000000000000530312247132667020655 0ustar Author: Daigo Moriwaki Disable gem update --system functionality, as it can break things. Users should use apt instead. (Closes: #452547). This patch was imported from the rubygems package. --- a/lib/rubygems/commands/update_command.rb +++ b/lib/rubygems/commands/update_command.rb @@ -128,6 +128,10 @@ class Gem::Commands::UpdateCommand < Gem # Update RubyGems software to the latest version. def update_rubygems + if not ENV.include?('REALLY_GEM_UPDATE_SYSTEM') + fail "gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories.\nIf you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian." + end + unless options[:args].empty? then alert_error "Gem names are not allowed with the --system option" terminate_interaction 1 --- a/test/rubygems/test_gem_commands_update_command.rb +++ b/test/rubygems/test_gem_commands_update_command.rb @@ -83,7 +83,7 @@ class TestGemCommandsUpdateCommand < Gem end end - def test_execute_system + def est_execute_system util_clear_gems util_setup_rubygem9 util_setup_spec_fetcher @rubygem9 @@ -107,7 +107,7 @@ class TestGemCommandsUpdateCommand < Gem assert_empty out end - def test_execute_system_at_latest + def est_execute_system_at_latest util_clear_gems util_setup_rubygem_current util_setup_spec_fetcher @rubygem_current @@ -129,7 +129,7 @@ class TestGemCommandsUpdateCommand < Gem assert_empty out end - def test_execute_system_multiple + def est_execute_system_multiple util_clear_gems util_setup_rubygem9 util_setup_rubygem8 @@ -154,7 +154,7 @@ class TestGemCommandsUpdateCommand < Gem assert_empty out end - def test_execute_system_specific + def est_execute_system_specific util_clear_gems util_setup_rubygem9 util_setup_rubygem8 @@ -179,7 +179,7 @@ class TestGemCommandsUpdateCommand < Gem assert_empty out end - def test_execute_system_specifically_to_latest_version + def est_execute_system_specifically_to_latest_version util_clear_gems util_setup_rubygem9 util_setup_rubygem8 @@ -204,7 +204,7 @@ class TestGemCommandsUpdateCommand < Gem assert_empty out end - def test_execute_system_with_gems + def est_execute_system_with_gems @cmd.options[:args] = %w[gem] @cmd.options[:system] = true @cmd.options[:generate_rdoc] = false debian/patches/CVE-2018-8777-CVE-2017-17742-pre.patch0000664000000000000000000003013413306234616015534 0ustar From 19cb3fa9e0621004a9dc08e90884c512c75dac57 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:44:20 +0000 Subject: [PATCH 1/3] merge revision(s) 60584,62954-62959,63008: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit webrick: support Proc objects as body responses * lib/webrick/httpresponse.rb (send_body): call send_body_proc (send_body_proc): new method (class ChunkedWrapper): new class * test/webrick/test_httpresponse.rb (test_send_body_proc): new test (test_send_body_proc_chunked): ditto [Feature #855] webrick: favor .write over << method This will make the next change to use IO.copy_stream easier-to-read. When we can drop Ruby 2.4 support in a few years, this will allow us to use writev(2) with multiple arguments for headers and chunked responses. * lib/webrick/cgi.rb (write): new wrapper method lib/webrick/httpresponse.rb: (send_header): use socket.write (send_body_io): ditto (send_body_string): ditto (send_body_proc): ditto (_write_data): ditto (ChunkedWrapper#write): ditto (_send_file): ditto ------------------------------------------------------------------------ r62954 | normal | 2018-03-28 17:05:52 +0900 (水, 28 3 2018) | 14 lines webrick/httpresponse: IO.copy_stream for regular files Remove the redundant _send_file method since its functionality is unnecessary with IO.copy_stream. IO.copy_stream also allows the use of sendfile under some OSes to speed up copies to non-TLS sockets. Testing with "curl >/dev/null" and "ruby -run -e httpd" to read a 1G file over Linux loopback reveals a reduction from around ~0.770 to ~0.490 seconds on the client side. * lib/webrick/httpresponse.rb (send_body_io): use IO.copy_stream (_send_file): remove [Feature #14237] ------------------------------------------------------------------------ r62955 | normal | 2018-03-28 17:05:57 +0900 (水, 28 3 2018) | 10 lines webrick: use IO.copy_stream for single range response This is also compatible with range responses generated by Rack::File (tested with rack 2.0.3). * lib/webrick/httpresponse.rb (send_body_io): use Content-Range * lib/webrick/httpservlet/filehandler.rb (make_partial_content): use File object for the single range case * test/webrick/test_filehandler.rb (get_res_body): use send_body to test result ------------------------------------------------------------------------ r62956 | normal | 2018-03-28 17:06:02 +0900 (水, 28 3 2018) | 7 lines test/webrick/test_filehandler.rb: stricter multipart range test We need to ensure we generate compatibile output in the face of future changes * test/webrick/test_filehandler.rb (test_make_partial_content): check response body ------------------------------------------------------------------------ r62957 | normal | 2018-03-28 17:06:08 +0900 (水, 28 3 2018) | 8 lines webrick: quiet warning for multi-part ranges Content-Length is ignored by WEBrick::HTTPResponse even if we calculate it, so instead we chunk responses to HTTP/1.1 clients and terminate HTTP/1.0 connections. * lib/webrick/httpservlet/filehandler.rb (make_partial_content): quiet warning ------------------------------------------------------------------------ r62958 | normal | 2018-03-28 17:06:13 +0900 (水, 28 3 2018) | 7 lines webrick/httpresponse: make ChunkedWrapper copy_stream-compatible The .write method needs to return the number of bytes written to avoid confusing IO.copy_stream. * lib/webrick/httpresponse.rb (ChunkedWrapper#write): return bytes written (ChunkedWrapper#<<): return self ------------------------------------------------------------------------ r62959 | normal | 2018-03-28 17:06:18 +0900 (水, 28 3 2018) | 9 lines webrick: use IO.copy_stream for multipart response Use the new Proc response body feature to generate a multipart range response dynamically. We use a flat array to minimize object overhead as much as possible; as many ranges may fit into an HTTP request header. * lib/webrick/httpservlet/filehandler.rb (multipart_body): new method (make_partial_content): use multipart_body get rid of test error/failure on Windows introduced at r62955 * lib/webrick/httpresponse.rb (send_body_io): use seek if NotImplementedError is raised in IO.copy_stream with offset. * lib/webrick/httpservlet/filehandler.rb (multipart_body): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index 0d36c07..d218c6b 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -243,10 +243,13 @@ module WEBrick ## # Sends the body on +socket+ - def send_body(socket) - case @body - when IO then send_body_io(socket) - else send_body_string(socket) + def send_body(socket) # :nodoc: + if @body.respond_to? :readpartial then + send_body_io(socket) + elsif @body.respond_to?(:call) then + send_body_proc(socket) + else + send_body_string(socket) end end @@ -340,9 +343,20 @@ module WEBrick end _write_data(socket, "0#{CRLF}#{CRLF}") else - size = @header['content-length'].to_i - _send_file(socket, @body, 0, size) - @sent_size = size + if %r{\Abytes (\d+)-(\d+)/\d+\z} =~ @header['content-range'] + offset = $1.to_i + size = $2.to_i - offset + 1 + else + offset = nil + size = @header['content-length'] + size = size.to_i if size + end + begin + @sent_size = IO.copy_stream(@body, socket, size, offset) + rescue NotImplementedError + @body.seek(offset, IO::SEEK_SET) + @sent_size = IO.copy_stream(@body, socket, size) + end end ensure @body.close @@ -371,24 +385,41 @@ module WEBrick end end - def _send_file(output, input, offset, size) - while offset > 0 - sz = @buffer_size < size ? @buffer_size : size - buf = input.read(sz) - offset -= buf.bytesize + def send_body_proc(socket) + if @request_method == "HEAD" + # do nothing + elsif chunked? + @body.call(ChunkedWrapper.new(socket, self)) + _write_data(socket, "0#{CRLF}#{CRLF}") + else + size = @header['content-length'].to_i + @body.call(socket) + @sent_size = size + end + end + + class ChunkedWrapper + def initialize(socket, resp) + @socket = socket + @resp = resp end - if size == 0 - while buf = input.read(@buffer_size) - _write_data(output, buf) - end - else - while size > 0 - sz = @buffer_size < size ? @buffer_size : size - buf = input.read(sz) - _write_data(output, buf) - size -= buf.bytesize - end + def write(buf) + return 0 if buf.empty? + socket = @socket + @resp.instance_eval { + size = buf.bytesize + data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}" + _write_data(socket, data) + data.clear + @sent_size += size + size + } + end + + def <<(*buf) + write(buf) + self end end diff --git a/lib/webrick/httpservlet/filehandler.rb b/lib/webrick/httpservlet/filehandler.rb index 8736f57..c738358 100644 --- a/lib/webrick/httpservlet/filehandler.rb +++ b/lib/webrick/httpservlet/filehandler.rb @@ -69,6 +69,35 @@ module WEBrick return false end + # returns a lambda for webrick/httpresponse.rb send_body_proc + def multipart_body(body, parts, boundary, mtype, filesize) + lambda do |socket| + begin + begin + first = parts.shift + last = parts.shift + socket.write( + "--#{boundary}#{CRLF}" \ + "Content-Type: #{mtype}#{CRLF}" \ + "Content-Range: bytes #{first}-#{last}/#{filesize}#{CRLF}" \ + "#{CRLF}" + ) + + begin + IO.copy_stream(body, socket, last - first + 1, first) + rescue NotImplementedError + body.seek(first, IO::SEEK_SET) + IO.copy_stream(body, socket, last - first + 1) + end + socket.write(CRLF) + end while parts[0] + socket.write("--#{boundary}--#{CRLF}") + ensure + body.close + end + end + end + def make_partial_content(req, res, filename, filesize) mtype = HTTPUtils::mime_type(filename, @config[:MimeTypes]) unless ranges = HTTPUtils::parse_range_header(req['range']) @@ -79,37 +108,27 @@ module WEBrick if ranges.size > 1 time = Time.now boundary = "#{time.sec}_#{time.usec}_#{Process::pid}" - body = '' - ranges.each{|range| - first, last = prepare_range(range, filesize) - next if first < 0 - io.pos = first - content = io.read(last-first+1) - body << "--" << boundary << CRLF - body << "Content-Type: #{mtype}" << CRLF - body << "Content-Range: bytes #{first}-#{last}/#{filesize}" << CRLF - body << CRLF - body << content - body << CRLF + parts = [] + ranges.each {|range| + prange = prepare_range(range, filesize) + next if prange[0] < 0 + parts.concat(prange) } - raise HTTPStatus::RequestRangeNotSatisfiable if body.empty? - body << "--" << boundary << "--" << CRLF + raise HTTPStatus::RequestRangeNotSatisfiable if parts.empty? res["content-type"] = "multipart/byteranges; boundary=#{boundary}" - res.body = body + if req.http_version < '1.1' + res['connection'] = 'close' + else + res.chunked = true + end + res.body = multipart_body(io.dup, parts, boundary, mtype, filesize) elsif range = ranges[0] first, last = prepare_range(range, filesize) raise HTTPStatus::RequestRangeNotSatisfiable if first < 0 - if last == filesize - 1 - content = io.dup - content.pos = first - else - io.pos = first - content = io.read(last-first+1) - end res['content-type'] = mtype res['content-range'] = "bytes #{first}-#{last}/#{filesize}" res['content-length'] = last - first + 1 - res.body = content + res.body = io.dup else raise HTTPStatus::BadRequest end diff --git a/test/webrick/test_filehandler.rb b/test/webrick/test_filehandler.rb index cc27b34..7edac00 100644 --- a/test/webrick/test_filehandler.rb +++ b/test/webrick/test_filehandler.rb @@ -14,11 +14,10 @@ class WEBrick::TestFileHandler < Test::Unit::TestCase end def get_res_body(res) - if defined? res.body.read - res.body.read - else - res.body - end + sio = StringIO.new + sio.binmode + res.send_body(sio) + sio.string end def make_range_request(range_spec) @@ -70,6 +69,23 @@ class WEBrick::TestFileHandler < Test::Unit::TestCase res = make_range_response(filename, "bytes=0-0, -2") assert_match(%r{^multipart/byteranges}, res["content-type"]) + body = get_res_body(res) + boundary = /; boundary=(.+)/.match(res['content-type'])[1] + off = filesize - 2 + last = filesize - 1 + + exp = "--#{boundary}\r\n" \ + "Content-Type: text/plain\r\n" \ + "Content-Range: bytes 0-0/#{filesize}\r\n" \ + "\r\n" \ + "#{IO.read(__FILE__, 1)}\r\n" \ + "--#{boundary}\r\n" \ + "Content-Type: text/plain\r\n" \ + "Content-Range: bytes #{off}-#{last}/#{filesize}\r\n" \ + "\r\n" \ + "#{IO.read(__FILE__, 2, off)}\r\n" \ + "--#{boundary}--\r\n" + assert_equal exp, body end def test_filehandler debian/patches/openssl-test-failure.patch0000664000000000000000000003574313121743700015737 0ustar Description: fix tests with openssl Logjam update Index: ruby1.9.1-1.9.3.484/test/rubygems/test_gem_remote_fetcher.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rubygems/test_gem_remote_fetcher.rb 2017-06-19 07:28:44.579747637 -0400 +++ ruby1.9.1-1.9.3.484/test/rubygems/test_gem_remote_fetcher.rb 2017-06-19 07:28:44.575747591 -0400 @@ -853,7 +853,7 @@ gems: end DIR = File.expand_path(File.dirname(__FILE__)) - DH_PARAM = OpenSSL::PKey::DH.new(128) + DH_PARAM = OpenSSL::PKey::DH.new(1024) def start_ssl_server(config = {}) null_logger = NilLog.new Index: ruby1.9.1-1.9.3.484/test/openssl/test_pkey_dh.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/test_pkey_dh.rb 2017-06-19 07:28:44.579747637 -0400 +++ ruby1.9.1-1.9.3.484/test/openssl/test_pkey_dh.rb 2017-06-19 07:28:44.575747591 -0400 @@ -4,12 +4,12 @@ if defined?(OpenSSL) class OpenSSL::TestPKeyDH < Test::Unit::TestCase def test_new - dh = OpenSSL::PKey::DH.new(256) + dh = OpenSSL::PKey::DH.new(1024) assert_key(dh) end def test_to_der - dh = OpenSSL::PKey::DH.new(256) + dh = OpenSSL::PKey::DH.new(1024) der = dh.to_der dh2 = OpenSSL::PKey::DH.new(der) assert_equal_params(dh, dh2) @@ -17,7 +17,7 @@ class OpenSSL::TestPKeyDH < Test::Unit:: end def test_to_pem - dh = OpenSSL::PKey::DH.new(256) + dh = OpenSSL::PKey::DH.new(1024) pem = dh.to_pem dh2 = OpenSSL::PKey::DH.new(pem) assert_equal_params(dh, dh2) @@ -25,7 +25,7 @@ class OpenSSL::TestPKeyDH < Test::Unit:: end def test_public_key - dh = OpenSSL::PKey::DH.new(256) + dh = OpenSSL::PKey::DH.new(1024) public_key = dh.public_key assert_no_key(public_key) #implies public_key.public? is false! assert_equal(dh.to_der, public_key.to_der) @@ -33,14 +33,14 @@ class OpenSSL::TestPKeyDH < Test::Unit:: end def test_generate_key - dh = OpenSSL::TestUtils::TEST_KEY_DH512.public_key # creates a copy + dh = OpenSSL::TestUtils::TEST_KEY_DH1024.public_key # creates a copy assert_no_key(dh) dh.generate_key! assert_key(dh) end def test_key_exchange - dh = OpenSSL::TestUtils::TEST_KEY_DH512 + dh = OpenSSL::TestUtils::TEST_KEY_DH1024 dh2 = dh.public_key dh.generate_key! dh2.generate_key! Index: ruby1.9.1-1.9.3.484/test/openssl/utils.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/utils.rb 2017-06-19 07:28:44.579747637 -0400 +++ ruby1.9.1-1.9.3.484/test/openssl/utils.rb 2017-06-19 08:18:23.210853250 -0400 @@ -92,10 +92,11 @@ CeBUl+MahZtn9fO1JKdF4qJmS39dXnpENg== end - TEST_KEY_DH512 = OpenSSL::PKey::DH.new <<-_end_of_pem_ + TEST_KEY_DH1024 = OpenSSL::PKey::DH.new <<-_end_of_pem_ -----BEGIN DH PARAMETERS----- -MEYCQQDmWXGPqk76sKw/edIOdhAQD4XzjJ+AR/PTk2qzaGs+u4oND2yU5D2NN4wr -aPgwHyJBiK1/ebK3tYcrSKrOoRyrAgEC +MIGHAoGBAKnKQ8MNK6nYZzLrrcuTsLxuiJGXoOO5gT+tljOTbHBuiktdMTITzIY0 +pFxIvjG05D7HoBZQfrR0c92NGWPkAiCkhQKB8JCbPVzwNLDy6DZ0pmofDKrEsYHG +AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC -----END DH PARAMETERS----- _end_of_pem_ @@ -238,7 +239,7 @@ aPgwHyJBiK1/ebK3tYcrSKrOoRyrAgEC rescue Errno::EBADF, IOError, Errno::EINVAL, Errno::ECONNABORTED, Errno::ENOTSOCK end - DHParam = OpenSSL::PKey::DH.new(128) + DHParam = OpenSSL::PKey::DH.new(1024) def start_server(port0, verify_mode, start_immediately, args = {}, &block) ctx_proc = args[:ctx_proc] server_proc = args[:server_proc] Index: ruby1.9.1-1.9.3.484/test/openssl/test_pair.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/test_pair.rb 2011-07-14 01:46:00.000000000 -0400 +++ ruby1.9.1-1.9.3.484/test/openssl/test_pair.rb 2017-06-19 08:19:48.867862788 -0400 @@ -6,7 +6,7 @@ require 'socket' require_relative '../ruby/ut_eof' module SSLPair - DHParam = OpenSSL::PKey::DH.new(128) + DHParam = OpenSSL::PKey::DH.new(1024) def server host = "127.0.0.1" port = 0 Index: ruby1.9.1-1.9.3.484/test/net/imap/cacert.pem =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/net/imap/cacert.pem 2010-12-23 05:25:44.000000000 -0500 +++ ruby1.9.1-1.9.3.484/test/net/imap/cacert.pem 2014-01-12 09:23:53.000000000 -0500 @@ -2,59 +2,65 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - 9f:dc:f7:94:98:05:43:4c + b9:90:a2:bf:62:69:17:9c Signature Algorithm: sha1WithRSAEncryption Issuer: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org Validity - Not Before: Dec 23 10:21:33 2010 GMT - Not After : Jan 1 10:21:33 2014 GMT + Not Before: Jan 3 01:34:17 2014 GMT + Not After : Jan 2 01:34:17 2019 GMT Subject: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org Subject Public Key Info: Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:ce:be:2c:9f:47:ba:db:9c:9c:5b:f0:38:3b:f3: - 74:20:37:76:23:9f:84:1c:81:90:b4:3e:00:20:34: - 98:7e:81:69:50:a1:c3:65:96:ea:fa:00:da:8c:cc: - 53:3f:ba:3c:d0:50:7a:5a:b4:6b:ac:d3:2e:18:ca: - 2a:69:b3:6a:6f:38:c2:32:a8:06:b6:0a:30:a9:ee: - 03:38:e9:05:a5:19:23:54:a8:3c:b9:08:ad:2b:72: - 23:df:93:22:c4:46:a8:ea:f1:a6:e9:30:4a:3f:83: - 39:e9:62:8e:8b:a3:5e:67:89:1d:7c:75:de:05:aa: - 58:b1:b7:79:7c:10:80:6d:87 + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:db:75:d0:45:de:b1:df:bf:71:a0:0e:b0:a5:e6: + bc:f4:1c:9d:e5:25:67:64:c5:7b:cb:f1:af:c6:be: + 9a:aa:ea:7e:0f:cc:05:af:ef:40:69:06:b2:c9:13: + 9d:7e:eb:a2:06:e2:ea:7d:07:c7:c7:99:c7:fb:d5: + b8:eb:63:77:62:2b:18:12:c3:53:58:d0:f5:c7:40: + 0c:01:d1:26:82:34:16:09:e3:dc:65:f4:dc:bb:5d: + a5:41:60:e7:a9:74:ba:d7:4c:b6:a3:9c:c5:8c:89: + af:cb:e8:9f:05:fe:ea:fe:64:24:bf:e7:ed:e3:f6: + d0:fc:d6:eb:fc:06:82:10:fb Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: - 41:C9:49:37:B1:FA:61:E3:BA:D7:19:3D:D9:DA:8C:B9:82:C9:B4:6A + E8:7E:58:AC:13:7B:03:22:8D:9E:AF:32:0B:84:89:80:80:0C:1E:C2 X509v3 Authority Key Identifier: - keyid:41:C9:49:37:B1:FA:61:E3:BA:D7:19:3D:D9:DA:8C:B9:82:C9:B4:6A + keyid:E8:7E:58:AC:13:7B:03:22:8D:9E:AF:32:0B:84:89:80:80:0C:1E:C2 + DirName:/C=JP/ST=Shimane/L=Matz-e city/O=Ruby Core Team/CN=Ruby Test CA/emailAddress=security@ruby-lang.org + serial:B9:90:A2:BF:62:69:17:9C X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption - 86:00:33:b9:dd:ff:5f:83:59:5f:c3:29:3c:d7:11:db:10:b3: - d7:d1:70:fb:0a:c6:74:85:c6:ea:e1:15:c4:92:f8:0e:11:cc: - ff:a6:3c:31:c2:2c:66:d8:fe:63:93:9f:b0:97:e6:f5:bc:5c: - 80:68:96:5d:eb:77:b9:23:dd:68:a7:49:03:ff:22:48:55:f1: - 39:7c:20:21:ff:64:52:e1:f6:cf:3c:b3:4d:2c:5c:03:62:ea: - c5:49:99:07:fa:8d:ff:7b:c2:75:0c:ca:24:b5:0b:f5:b7:57: - 3a:10:f0:8a:bb:9a:e8:92:4d:d5:6f:c2:a2:29:36:61:78:a4: - dc:7b + 8f:77:06:4e:31:72:12:ee:68:09:70:27:d4:31:85:ef:10:95: + f9:0f:2b:66:63:08:37:88:6e:b7:9b:40:3e:18:77:33:86:e8: + 61:6a:b7:3c:cb:c7:a6:d6:d5:92:6a:1f:56:d0:9f:5c:32:56: + d3:37:52:fe:0e:20:c2:7a:0d:fe:2d:3c:81:da:b8:7f:4d:6a: + 08:01:d9:be:7a:a2:15:be:a6:ce:49:64:90:8c:9a:ca:6e:2e: + 84:48:1d:94:19:56:94:46:aa:25:9b:68:c2:80:60:bf:cb:2e: + 35:03:ea:0a:65:5a:33:38:c6:cc:81:46:c0:bc:36:86:96:39: + 10:7d -----BEGIN CERTIFICATE----- -MIIC6DCCAlGgAwIBAgIJAJ/c95SYBUNMMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD -VQQGEwJKUDEQMA4GA1UECAwHU2hpbWFuZTEUMBIGA1UEBwwLTWF0ei1lIGNpdHkx -FzAVBgNVBAoMDlJ1YnkgQ29yZSBUZWFtMRUwEwYDVQQDDAxSdWJ5IFRlc3QgQ0Ex -JTAjBgkqhkiG9w0BCQEWFnNlY3VyaXR5QHJ1YnktbGFuZy5vcmcwHhcNMTAxMjIz -MTAyMTMzWhcNMTQwMTAxMTAyMTMzWjCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgM -B1NoaW1hbmUxFDASBgNVBAcMC01hdHotZSBjaXR5MRcwFQYDVQQKDA5SdWJ5IENv -cmUgVGVhbTEVMBMGA1UEAwwMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz +MIIDjTCCAvagAwIBAgIJALmQor9iaRecMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD +VQQGEwJKUDEQMA4GA1UECBMHU2hpbWFuZTEUMBIGA1UEBxMLTWF0ei1lIGNpdHkx +FzAVBgNVBAoTDlJ1YnkgQ29yZSBUZWFtMRUwEwYDVQQDEwxSdWJ5IFRlc3QgQ0Ex +JTAjBgkqhkiG9w0BCQEWFnNlY3VyaXR5QHJ1YnktbGFuZy5vcmcwHhcNMTQwMTAz +MDEzNDE3WhcNMTkwMTAyMDEzNDE3WjCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgT +B1NoaW1hbmUxFDASBgNVBAcTC01hdHotZSBjaXR5MRcwFQYDVQQKEw5SdWJ5IENv +cmUgVGVhbTEVMBMGA1UEAxMMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz ZWN1cml0eUBydWJ5LWxhbmcub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQDOviyfR7rbnJxb8Dg783QgN3Yjn4QcgZC0PgAgNJh+gWlQocNllur6ANqMzFM/ -ujzQUHpatGus0y4Yyipps2pvOMIyqAa2CjCp7gM46QWlGSNUqDy5CK0rciPfkyLE -Rqjq8abpMEo/gznpYo6Lo15niR18dd4Fqlixt3l8EIBthwIDAQABo1AwTjAdBgNV -HQ4EFgQUQclJN7H6YeO61xk92dqMuYLJtGowHwYDVR0jBBgwFoAUQclJN7H6YeO6 -1xk92dqMuYLJtGowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCGADO5 -3f9fg1lfwyk81xHbELPX0XD7CsZ0hcbq4RXEkvgOEcz/pjwxwixm2P5jk5+wl+b1 -vFyAaJZd63e5I91op0kD/yJIVfE5fCAh/2RS4fbPPLNNLFwDYurFSZkH+o3/e8J1 -DMoktQv1t1c6EPCKu5rokk3Vb8KiKTZheKTcew== +gQDbddBF3rHfv3GgDrCl5rz0HJ3lJWdkxXvL8a/Gvpqq6n4PzAWv70BpBrLJE51+ +66IG4up9B8fHmcf71bjrY3diKxgSw1NY0PXHQAwB0SaCNBYJ49xl9Ny7XaVBYOep +dLrXTLajnMWMia/L6J8F/ur+ZCS/5+3j9tD81uv8BoIQ+wIDAQABo4H0MIHxMB0G +A1UdDgQWBBToflisE3sDIo2erzILhImAgAwewjCBwQYDVR0jBIG5MIG2gBToflis +E3sDIo2erzILhImAgAwewqGBkqSBjzCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgT +B1NoaW1hbmUxFDASBgNVBAcTC01hdHotZSBjaXR5MRcwFQYDVQQKEw5SdWJ5IENv +cmUgVGVhbTEVMBMGA1UEAxMMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz +ZWN1cml0eUBydWJ5LWxhbmcub3JnggkAuZCiv2JpF5wwDAYDVR0TBAUwAwEB/zAN +BgkqhkiG9w0BAQUFAAOBgQCPdwZOMXIS7mgJcCfUMYXvEJX5DytmYwg3iG63m0A+ +GHczhuhharc8y8em1tWSah9W0J9cMlbTN1L+DiDCeg3+LTyB2rh/TWoIAdm+eqIV +vqbOSWSQjJrKbi6ESB2UGVaURqolm2jCgGC/yy41A+oKZVozOMbMgUbAvDaGljkQ +fQ== -----END CERTIFICATE----- Index: ruby1.9.1-1.9.3.484/test/net/imap/server.crt =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/net/imap/server.crt 2010-12-23 05:25:44.000000000 -0500 +++ ruby1.9.1-1.9.3.484/test/net/imap/server.crt 2014-01-12 09:23:53.000000000 -0500 @@ -1,17 +1,17 @@ Certificate: Data: - Version: 3 (0x2) + Version: 1 (0x0) Serial Number: 0 (0x0) Signature Algorithm: sha1WithRSAEncryption Issuer: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org Validity - Not Before: Dec 23 10:23:52 2010 GMT - Not After : Jan 1 10:23:52 2014 GMT + Not Before: Jan 3 01:34:17 2014 GMT + Not After : Jan 2 01:34:17 2019 GMT Subject: C=JP, ST=Shimane, O=Ruby Core Team, OU=Ruby Test, CN=localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: + RSA Public Key: (1024 bit) + Modulus (1024 bit): 00:db:75:d0:45:de:b1:df:bf:71:a0:0e:b0:a5:e6: bc:f4:1c:9d:e5:25:67:64:c5:7b:cb:f1:af:c6:be: 9a:aa:ea:7e:0f:cc:05:af:ef:40:69:06:b2:c9:13: @@ -22,40 +22,27 @@ Certificate: af:cb:e8:9f:05:fe:ea:fe:64:24:bf:e7:ed:e3:f6: d0:fc:d6:eb:fc:06:82:10:fb Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - E8:7E:58:AC:13:7B:03:22:8D:9E:AF:32:0B:84:89:80:80:0C:1E:C2 - X509v3 Authority Key Identifier: - keyid:41:C9:49:37:B1:FA:61:E3:BA:D7:19:3D:D9:DA:8C:B9:82:C9:B4:6A - Signature Algorithm: sha1WithRSAEncryption - ae:ee:cd:fe:c9:af:48:0b:50:37:ac:6a:f6:68:90:9b:67:df: - 6f:2d:17:c9:3c:a5:da:ad:39:dc:2a:5b:07:88:26:38:19:30: - d6:95:cf:10:69:c7:92:14:83:be:f1:b5:8e:6f:d9:91:51:c5: - 63:ae:1c:89:ac:27:bf:4f:2a:8f:4e:0c:57:42:0a:c9:8e:0c: - f4:f3:02:f7:ea:44:b6:e4:47:05:af:4e:74:e4:87:87:d9:c8: - 76:ed:ab:32:7c:f0:31:34:10:14:bc:a6:37:cd:d7:dc:33:da: - 82:d3:d4:9b:e9:d5:cd:38:cc:fa:81:5f:4e:fd:5f:53:05:5d: - 76:f9 + 85:f5:d3:05:8b:8c:f4:43:1c:88:f2:8f:b2:f2:93:77:b7:3d: + 95:c6:a0:34:bc:33:6a:d8:85:5f:3e:86:08:10:c5:5c:c1:76: + a3:53:3c:dc:38:98:23:97:e7:da:21:ac:e8:4d:3c:96:70:29: + ff:ff:1e:4a:9a:17:2b:db:04:62:b9:ef:ab:ea:a7:a5:e8:7c: + b1:d5:ed:30:a8:6c:78:de:51:7e:e3:8a:c2:a4:64:a8:63:a2: + bc:fd:43:9c:f3:55:7d:54:c9:6a:d8:53:1c:4b:6b:03:aa:b6: + 19:e6:a4:4f:47:00:96:c5:42:59:85:4e:c3:4e:cd:41:82:53: + 10:f8 -----BEGIN CERTIFICATE----- -MIIC3jCCAkegAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSlAx -EDAOBgNVBAgMB1NoaW1hbmUxFDASBgNVBAcMC01hdHotZSBjaXR5MRcwFQYDVQQK -DA5SdWJ5IENvcmUgVGVhbTEVMBMGA1UEAwwMUnVieSBUZXN0IENBMSUwIwYJKoZI -hvcNAQkBFhZzZWN1cml0eUBydWJ5LWxhbmcub3JnMB4XDTEwMTIyMzEwMjM1MloX -DTE0MDEwMTEwMjM1MlowYDELMAkGA1UEBhMCSlAxEDAOBgNVBAgMB1NoaW1hbmUx -FzAVBgNVBAoMDlJ1YnkgQ29yZSBUZWFtMRIwEAYDVQQLDAlSdWJ5IFRlc3QxEjAQ -BgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA23XQ -Rd6x379xoA6wpea89Byd5SVnZMV7y/Gvxr6aqup+D8wFr+9AaQayyROdfuuiBuLq -fQfHx5nH+9W462N3YisYEsNTWND1x0AMAdEmgjQWCePcZfTcu12lQWDnqXS610y2 -o5zFjImvy+ifBf7q/mQkv+ft4/bQ/Nbr/AaCEPsCAwEAAaN7MHkwCQYDVR0TBAIw -ADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUw -HQYDVR0OBBYEFOh+WKwTewMijZ6vMguEiYCADB7CMB8GA1UdIwQYMBaAFEHJSTex -+mHjutcZPdnajLmCybRqMA0GCSqGSIb3DQEBBQUAA4GBAK7uzf7Jr0gLUDesavZo -kJtn328tF8k8pdqtOdwqWweIJjgZMNaVzxBpx5IUg77xtY5v2ZFRxWOuHImsJ79P -Ko9ODFdCCsmODPTzAvfqRLbkRwWvTnTkh4fZyHbtqzJ88DE0EBS8pjfN19wz2oLT -1Jvp1c04zPqBX079X1MFXXb5 +MIICXDCCAcUCAQAwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAkpQMRAwDgYD +VQQIEwdTaGltYW5lMRQwEgYDVQQHEwtNYXR6LWUgY2l0eTEXMBUGA1UEChMOUnVi +eSBDb3JlIFRlYW0xFTATBgNVBAMTDFJ1YnkgVGVzdCBDQTElMCMGCSqGSIb3DQEJ +ARYWc2VjdXJpdHlAcnVieS1sYW5nLm9yZzAeFw0xNDAxMDMwMTM0MTdaFw0xOTAx +MDIwMTM0MTdaMGAxCzAJBgNVBAYTAkpQMRAwDgYDVQQIEwdTaGltYW5lMRcwFQYD +VQQKEw5SdWJ5IENvcmUgVGVhbTESMBAGA1UECxMJUnVieSBUZXN0MRIwEAYDVQQD +Ewlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANt10EXesd+/ +caAOsKXmvPQcneUlZ2TFe8vxr8a+mqrqfg/MBa/vQGkGsskTnX7rogbi6n0Hx8eZ +x/vVuOtjd2IrGBLDU1jQ9cdADAHRJoI0Fgnj3GX03LtdpUFg56l0utdMtqOcxYyJ +r8vonwX+6v5kJL/n7eP20PzW6/wGghD7AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEA +hfXTBYuM9EMciPKPsvKTd7c9lcagNLwzatiFXz6GCBDFXMF2o1M83DiYI5fn2iGs +6E08lnAp//8eSpoXK9sEYrnvq+qnpeh8sdXtMKhseN5RfuOKwqRkqGOivP1DnPNV +fVTJathTHEtrA6q2GeakT0cAlsVCWYVOw07NQYJTEPg= -----END CERTIFICATE----- debian/patches/CVE-2018-8778.patch0000664000000000000000000000267613265125204013273 0ustar Backported of: From 4cd92d7b13002161a3452a0fe278b877901a8859 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:38:39 +0000 Subject: [PATCH] merge revision(s) 62992: pack.c: fix underflow * pack.c (pack_unpack_internal): get rid of underflow. https://hackerone.com/reports/298246 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- --- pack.c | 2 +- test/ruby/test_pack.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pack.c b/pack.c index a231a72..f3bfa6e 100644 --- a/pack.c +++ b/pack.c @@ -1410,7 +1410,7 @@ pack_unpack(VALUE str, VALUE fmt) else if (ISDIGIT(*p)) { errno = 0; len = STRTOUL(p, (char**)&p, 10); - if (errno) { + if (len < 0 || errno) { rb_raise(rb_eRangeError, "pack length too big"); } } diff --git a/test/ruby/test_pack.rb b/test/ruby/test_pack.rb index c862215..c7d66e0 100644 --- a/test/ruby/test_pack.rb +++ b/test/ruby/test_pack.rb @@ -463,6 +463,9 @@ class TestPack < Test::Unit::TestCase assert_equal([1, 2], "\x01\x00\x00\x02".unpack("C@3C")) assert_equal([nil], "\x00".unpack("@1C")) # is it OK? assert_raise(ArgumentError) { "\x00".unpack("@2C") } + + pos = (1 << [nil].pack("p").bytesize * 8) - 100 # -100 + assert_raise(RangeError) {"0123456789".unpack("@#{pos}C10")} end def test_pack_unpack_percent -- 2.7.4 debian/patches/CVE-2017-17742-pre.patch0000664000000000000000000000662513306220655014125 0ustar From d86a88d96247f373329a863c7d43106690420092 Mon Sep 17 00:00:00 2001 From: leosilva Date: Wed, 6 Jun 2018 17:33:56 -0300 Subject: [PATCH] third --- test/webrick/test_httpresponse.rb | 150 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 test/webrick/test_httpresponse.rb diff --git a/test/webrick/test_httpresponse.rb b/test/webrick/test_httpresponse.rb new file mode 100644 index 0000000..0f9cf2f --- /dev/null +++ b/test/webrick/test_httpresponse.rb @@ -0,0 +1,150 @@ +require "webrick" +require "minitest/autorun" +require "stringio" + +module WEBrick + class TestHTTPResponse < MiniTest::Unit::TestCase + class FakeLogger + attr_reader :messages + + def initialize + @messages = [] + end + + def warn msg + @messages << msg + end + end + + attr_reader :config, :logger, :res + + def setup + super + @logger = FakeLogger.new + @config = Config::HTTP + @config[:Logger] = logger + @res = HTTPResponse.new config + @res.keep_alive = true + end + + def test_304_does_not_log_warning + res.status = 304 + res.setup_header + assert_equal 0, logger.messages.length + end + + def test_204_does_not_log_warning + res.status = 204 + res.setup_header + + assert_equal 0, logger.messages.length + end + + def test_1xx_does_not_log_warnings + res.status = 105 + res.setup_header + + assert_equal 0, logger.messages.length + end + + def test_send_body_io + IO.pipe {|body_r, body_w| + body_w.write 'hello' + body_w.close + + @res.body = body_r + + IO.pipe {|r, w| + + @res.send_body w + + w.close + + assert_equal 'hello', r.read + } + } + assert_equal 0, logger.messages.length + end + + def test_send_body_string + @res.body = 'hello' + + IO.pipe {|r, w| + @res.send_body w + + w.close + + assert_equal 'hello', r.read + } + assert_equal 0, logger.messages.length + end + + def test_send_body_string_io + @res.body = StringIO.new 'hello' + + IO.pipe {|r, w| + @res.send_body w + + w.close + + assert_equal 'hello', r.read + } + assert_equal 0, logger.messages.length + end + + def test_send_body_io_chunked + @res.chunked = true + + IO.pipe {|body_r, body_w| + + body_w.write 'hello' + body_w.close + + @res.body = body_r + + IO.pipe {|r, w| + @res.send_body w + + w.close + + r.binmode + assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read + } + } + assert_equal 0, logger.messages.length + end + + def test_send_body_string_chunked + @res.chunked = true + + @res.body = 'hello' + + IO.pipe {|r, w| + @res.send_body w + + w.close + + r.binmode + assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read + } + assert_equal 0, logger.messages.length + end + + def test_send_body_string_io_chunked + @res.chunked = true + + @res.body = StringIO.new 'hello' + + IO.pipe {|r, w| + @res.send_body w + + w.close + + r.binmode + assert_equal "5\r\nhello\r\n0\r\n\r\n", r.read + } + assert_equal 0, logger.messages.length + end + end +end + -- 2.7.4 debian/patches/CVE-2017-17742.patch0000664000000000000000000000666313306220661013340 0ustar From bbda1a027475bf7ce5e1a9583a7b55d0be71c8fe Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:50:27 +0000 Subject: [PATCH 3/3] merge revision(s) 62968: webrick: prevent response splitting and header injection Original patch by tenderlove (with minor style adjustments). * lib/webrick/httpresponse.rb (send_header): call check_header (check_header): raise on embedded CRLF in header value * test/webrick/test_httpresponse.rb (test_prevent_response_splitting_headers): new test * (test_prevent_response_splitting_cookie_headers): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index d218c6b..09c9704 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -19,6 +19,9 @@ module WEBrick # An HTTP response. class HTTPResponse + class InvalidHeader < StandardError + end + attr_reader :http_version, :status, :header attr_reader :cookies attr_accessor :reason_phrase @@ -230,14 +233,19 @@ module WEBrick data = status_line() @header.each{|key, value| tmp = key.gsub(/\bwww|^te$|\b\w/){ $&.upcase } - data << "#{tmp}: #{value}" << CRLF + data << "#{tmp}: #{check_header(value)}" << CRLF } @cookies.each{|cookie| - data << "Set-Cookie: " << cookie.to_s << CRLF + data << "Set-Cookie: " << check_header(cookie.to_s) << CRLF } data << CRLF _write_data(socket, data) end + rescue InvalidHeader => e + @header.clear + @cookies.clear + set_error e + retry end ## @@ -297,6 +305,22 @@ module WEBrick host, port = @config[:ServerName], @config[:Port] end + error_body(backtrace, ex, host, port) + end + + private + + def check_header(header_value) + if header_value =~ /\r\n/ + raise InvalidHeader + else + header_value + end + end + + # :stopdoc: + + def error_body(backtrace, ex, host, port) @body = '' @body << <<-_end_of_html_ diff --git a/test/webrick/test_httpresponse.rb b/test/webrick/test_httpresponse.rb index 0f9cf2f..f6ac2a7 100644 --- a/test/webrick/test_httpresponse.rb +++ b/test/webrick/test_httpresponse.rb @@ -1,6 +1,7 @@ require "webrick" require "minitest/autorun" require "stringio" +require "net/http" module WEBrick class TestHTTPResponse < MiniTest::Unit::TestCase @@ -27,6 +28,27 @@ module WEBrick @res.keep_alive = true end + def test_prevent_response_splitting_headers + res['X-header'] = "malicious\r\nCookie: hack" + io = StringIO.new + res.send_response io + io.rewind + res = Net::HTTPResponse.read_new(Net::BufferedIO.new(io)) + assert_equal '500', res.code + refute_match 'hack', io.string + end + + def test_prevent_response_splitting_cookie_headers + user_input = "malicious\r\nCookie: hack" + res.cookies << WEBrick::Cookie.new('author', user_input) + io = StringIO.new + res.send_response io + io.rewind + res = Net::HTTPResponse.read_new(Net::BufferedIO.new(io)) + assert_equal '500', res.code + refute_match 'hack', io.string + end + def test_304_does_not_log_warning res.status = 304 res.setup_header debian/patches/CVE-2018-8777.patch0000664000000000000000000003257613306252153013274 0ustar Backported of: From a45622669bb1ff18d3ee9b411128acd839c4263e Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:47:30 +0000 Subject: [PATCH 2/3] merge revision(s) 62960-62965: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit webrick: use IO.copy_stream for multipart response Use the new Proc response body feature to generate a multipart range response dynamically. We use a flat array to minimize object overhead as much as possible; as many ranges may fit into an HTTP request header. * lib/webrick/httpservlet/filehandler.rb (multipart_body): new method (make_partial_content): use multipart_body ------------------------------------------------------------------------ r62960 | normal | 2018-03-28 17:06:23 +0900 (水, 28 3 2018) | 13 lines webrick/httprequest: limit request headers size We use the same 112 KB limit started (AFAIK) by Mongrel, Thin, and Puma to prevent malicious users from using up all the memory with a single request. This also limits the damage done by excessive ranges in multipart Range: requests. Due to the way we rely on IO#gets and the desire to keep the code simple, the actual maximum header may be 4093 bytes larger than 112 KB, but we're splitting hairs at that point. * lib/webrick/httprequest.rb: define MAX_HEADER_LENGTH (read_header): raise when headers exceed max length ------------------------------------------------------------------------ r62961 | normal | 2018-03-28 17:06:28 +0900 (水, 28 3 2018) | 9 lines webrick/httpservlet/cgihandler: reduce memory use WEBrick::HTTPRequest#body can be passed a block to process the body in chunks. Use this feature to avoid building a giant string in memory. * lib/webrick/httpservlet/cgihandler.rb (do_GET): avoid reading entire request body into memory (do_POST is aliased to do_GET, so it handles bodies) ------------------------------------------------------------------------ r62962 | normal | 2018-03-28 17:06:34 +0900 (水, 28 3 2018) | 7 lines webrick/httprequest: raise correct exception "BadRequest" alone does not resolve correctly, it is in the HTTPStatus namespace. * lib/webrick/httprequest.rb (read_chunked): use correct exception * test/webrick/test_httpserver.rb (test_eof_in_chunk): new test ------------------------------------------------------------------------ r62963 | normal | 2018-03-28 17:06:39 +0900 (水, 28 3 2018) | 9 lines webrick/httprequest: use InputBufferSize for chunked requests While WEBrick::HTTPRequest#body provides a Proc interface for streaming large request bodies, clients must not force the server to use an excessively large chunk size. * lib/webrick/httprequest.rb (read_chunk_size): limit each read and block.call to :InputBufferSize in config. * test/webrick/test_httpserver.rb (test_big_chunks): new test ------------------------------------------------------------------------ r62964 | normal | 2018-03-28 17:06:44 +0900 (水, 28 3 2018) | 9 lines webrick: add test for Digest auth-int No changes to the actual code, this is a new test for a feature for which no tests existed. I don't understand the Digest authentication code well at all, but this is necessary for the subsequent change. * test/webrick/test_httpauth.rb (test_digest_auth_int): new test (credentials_for_request): support bodies with POST ------------------------------------------------------------------------ r62965 | normal | 2018-03-28 17:06:49 +0900 (水, 28 3 2018) | 18 lines webrick/httpauth/digestauth: stream req.body WARNING! WARNING! WARNING! LIKELY BROKEN CHANGE Pass a proc to WEBrick::HTTPRequest#body to avoid reading a potentially large request body into memory during authentication. WARNING! this will break apps completely which want to do something with the body besides calculating the MD5 digest of it. Also, keep in mind that probably nobody uses "auth-int". Servers such as Apache, lighttpd, nginx don't seem to support it; nor does curl when using POST/PUT bodies; and we didn't have tests for it until now... * lib/webrick/httpauth/digestauth.rb (_authenticate): stream req.body git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/webrick/httpauth/digestauth.rb | 8 ++-- lib/webrick/httprequest.rb | 23 ++++++++--- lib/webrick/httpservlet/cgihandler.rb | 4 +- test/webrick/test_httpauth.rb | 76 ++++++++++++++++++++++++++++++++++- test/webrick/test_httpserver.rb | 59 +++++++++++++++++++++++++++ 5 files changed, 156 insertions(+), 14 deletions(-) diff --git a/lib/webrick/httpauth/digestauth.rb b/lib/webrick/httpauth/digestauth.rb index 4e47fe1..76566fa 100644 --- a/lib/webrick/httpauth/digestauth.rb +++ b/lib/webrick/httpauth/digestauth.rb @@ -220,9 +220,11 @@ module WEBrick ha2 = hexdigest(req.request_method, auth_req['uri']) ha2_res = hexdigest("", auth_req['uri']) elsif auth_req['qop'] == "auth-int" - ha2 = hexdigest(req.request_method, auth_req['uri'], - hexdigest(req.body)) - ha2_res = hexdigest("", auth_req['uri'], hexdigest(res.body)) + body_digest = @h.new + req.body { |chunk| body_digest.update(chunk) } + body_digest = body_digest.hexdigest + ha2 = hexdigest(req.request_method, auth_req['uri'], body_digest) + ha2_res = hexdigest("", auth_req['uri'], body_digest) end if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int" diff --git a/lib/webrick/httprequest.rb b/lib/webrick/httprequest.rb index 050b5ed..a6c05d4 100644 --- a/lib/webrick/httprequest.rb +++ b/lib/webrick/httprequest.rb @@ -292,9 +292,13 @@ module WEBrick MAX_URI_LENGTH = 2083 # :nodoc: + # same as Mongrel, Thin and Puma + MAX_HEADER_LENGTH = (112 * 1024) # :nodoc: + def read_request_line(socket) @request_line = read_line(socket, MAX_URI_LENGTH) if socket - if @request_line.bytesize >= MAX_URI_LENGTH and @request_line[-1, 1] != LF + @request_bytes = @request_line.bytesize + if @request_bytes >= MAX_URI_LENGTH and @request_line[-1, 1] != LF raise HTTPStatus::RequestURITooLarge end @request_time = Time.now @@ -313,6 +317,9 @@ module WEBrick if socket while line = read_line(socket) break if /\A(#{CRLF}|#{LF})\z/om =~ line + if (@request_bytes += line.bytesize) > MAX_HEADER_LENGTH + raise HTTPStatus::RequestEntityTooLarge, 'headers too large' + end @raw_header << line end end @@ -380,12 +387,16 @@ module WEBrick def read_chunked(socket, block) chunk_size, = read_chunk_size(socket) while chunk_size > 0 - data = read_data(socket, chunk_size) # read chunk-data - if data.nil? || data.bytesize != chunk_size - raise BadRequest, "bad chunk data size." - end + begin + sz = [ chunk_size, @buffer_size ].min + data = read_data(socket, sz) # read chunk-data + if data.nil? || data.bytesize != sz + raise HTTPStatus::BadRequest, "bad chunk data size." + end + block.call(data) + end while (chunk_size -= sz) > 0 + read_line(socket) # skip CRLF - block.call(data) chunk_size, = read_chunk_size(socket) end read_header(socket) # trailer + CRLF diff --git a/lib/webrick/httpservlet/cgihandler.rb b/lib/webrick/httpservlet/cgihandler.rb index 1976ae6..c431c81 100644 --- a/lib/webrick/httpservlet/cgihandler.rb +++ b/lib/webrick/httpservlet/cgihandler.rb @@ -53,9 +53,7 @@ module WEBrick cgi_in.write("%8d" % dump.bytesize) cgi_in.write(dump) - if req.body and req.body.bytesize > 0 - cgi_in.write(req.body) - end + req.body { |chunk| cgi_in.write(chunk) } ensure cgi_in.close status = $?.exitstatus diff --git a/test/webrick/test_httpauth.rb b/test/webrick/test_httpauth.rb index 94085f9..368c23d 100644 --- a/test/webrick/test_httpauth.rb +++ b/test/webrick/test_httpauth.rb @@ -3,6 +3,7 @@ require "net/http" require "tempfile" require "webrick" require "webrick/httpauth/basicauth" +require "stringio" require_relative "utils" class TestWEBrickHTTPAuth < Test::Unit::TestCase @@ -179,12 +180,83 @@ class TestWEBrickHTTPAuth < Test::Unit::TestCase } end + def test_digest_auth_int + TestWEBrick.start_httpserver{|server, addr, port, log| + realm = "wb auth-int realm" + path = "/digest_auth_int" + + tmpfile = Tempfile.new("test_webrick_auth_int") + tmpfile.close + tmp_pass = WEBrick::HTTPAuth::Htdigest.new(tmpfile.path) + tmp_pass.set_passwd(realm, "foo", "Hunter2") + tmp_pass.flush + + htdigest = WEBrick::HTTPAuth::Htdigest.new(tmpfile.path) + users = [] + htdigest.each{|user, pass| users << user } + assert_equal %w(foo), users + + auth = WEBrick::HTTPAuth::DigestAuth.new( + :Realm => realm, :UserDB => htdigest, + :Algorithm => 'MD5', + :Logger => server.logger, + :Qop => %w(auth-int), + ) + server.mount_proc(path){|req, res| + auth.authenticate(req, res) + res.body = "bbb" + } + Net::HTTP.start(addr, port) do |http| + post = Net::HTTP::Post.new(path) + params = {} + data = 'hello=world' + body = StringIO.new(data) + post.content_length = data.bytesize + post['Content-Type'] = 'application/x-www-form-urlencoded' + post.body_stream = body + + http.request(post) do |res| + assert_equal('401', res.code, log.call) + res["www-authenticate"].scan(DIGESTRES_) do |key, quoted, token| + params[key.downcase] = token || quoted.delete('\\') + end + params['uri'] = "http://#{addr}:#{port}#{path}" + end + + body.rewind + cred = credentials_for_request('foo', 'Hunter3', params, body) + post['Authorization'] = cred + post.body_stream = body + http.request(post){|res| + assert_equal('401', res.code, log.call) + assert_not_equal("bbb", res.body, log.call) + } + + body.rewind + cred = credentials_for_request('foo', 'Hunter2', params, body) + post['Authorization'] = cred + post.body_stream = body + http.request(post){|res| assert_equal("bbb", res.body, log.call)} + end + } + end + private - def credentials_for_request(user, password, params) + def credentials_for_request(user, password, params, body = nil) cnonce = "hoge" nonce_count = 1 ha1 = "#{user}:#{params['realm']}:#{password}" - ha2 = "GET:#{params['uri']}" + if body + dig = Digest::MD5.new + while buf = body.read(16384) + dig.update(buf) + end + body.rewind + ha2 = "POST:#{params['uri']}:#{dig.hexdigest}" + else + ha2 = "GET:#{params['uri']}" + end + request_digest = "#{Digest::MD5.hexdigest(ha1)}:" \ "#{params['nonce']}:#{'%08x' % nonce_count}:#{cnonce}:#{params['qop']}:" \ diff --git a/test/webrick/test_httpserver.rb b/test/webrick/test_httpserver.rb index 526d72c..0c29f7c 100644 --- a/test/webrick/test_httpserver.rb +++ b/test/webrick/test_httpserver.rb @@ -302,4 +302,63 @@ class TestWEBrickHTTPServer < Test::Unit::TestCase } assert_equal(requested, 1) end + + def test_gigantic_request_header + TestWEBrick.start_httpserver{|server, addr, port, log| + server.mount('/', WEBrick::HTTPServlet::FileHandler, __FILE__) + TCPSocket.open(addr, port) do |c| + c.write("GET / HTTP/1.0\r\n") + junk = "X-Junk: #{' ' * 1024}\r\n" + assert_raise(Errno::ECONNRESET, Errno::EPIPE) do + loop { c.write(junk) } + end + end + } + end + + def test_eof_in_chunk + TestWEBrick.start_httpserver{|server, addr, port, log| + server.mount_proc('/', ->(req, res) { res.body = req.body }) + TCPSocket.open(addr, port) do |c| + c.write("POST / HTTP/1.1\r\nHost: example.com\r\n" \ + "Transfer-Encoding: chunked\r\n\r\n5\r\na") + c.shutdown(Socket::SHUT_WR) # trigger EOF in server + res = c.read + assert_match %r{\AHTTP/1\.1 400 }, res + end + } + end + + def test_big_chunks + nr_out = 3 + buf = 'big' # 3 bytes is bigger than 2! + config = { :InputBufferSize => 2 }.freeze + total = 0 + all = '' + TestWEBrick.start_httpserver(config){|server, addr, port, log| + server.mount_proc('/', ->(req, res) { + err = [] + ret = req.body do |chunk| + n = chunk.bytesize + n > config[:InputBufferSize] and err << "#{n} > :InputBufferSize" + total += n + all << chunk + end + ret.nil? or err << 'req.body should return nil' + (buf * nr_out) == all or err << 'input body does not match expected' + res.header['connection'] = 'close' + res.body = err.join("\n") + }) + TCPSocket.open(addr, port) do |c| + c.write("POST / HTTP/1.1\r\nHost: example.com\r\n" \ + "Transfer-Encoding: chunked\r\n\r\n") + chunk = "#{buf.bytesize.to_s(16)}\r\n#{buf}\r\n" + nr_out.times { c.write(chunk) } + c.write("0\r\n\r\n") + head, body = c.read.split("\r\n\r\n") + assert_match %r{\AHTTP/1\.1 200 OK}, head + assert_nil body + end + } + end end -- 2.7.4 debian/patches/CVE-2015-9096.patch0000664000000000000000000001051513121777735013266 0ustar Backport of: From 0827a7e52ba3d957a634b063bf5a391239b9ffee Mon Sep 17 00:00:00 2001 From: shugo Date: Wed, 8 Jun 2016 07:06:57 +0000 Subject: [PATCH] * lib/net/smtp.rb (getok, get_response): raise an ArgumentError when CR or LF is included in a line, because they are not allowed in RFC5321. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/net/smtp.rb | 9 +++++++++ test/net/smtp/test_smtp.rb | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) #diff --git a/ChangeLog b/ChangeLog #index 2a1cb8c115d3..768469ea8ed6 100644 #--- a/ChangeLog #+++ b/ChangeLog #@@ -1,3 +1,9 @@ #+Wed Jun 8 16:03:09 2016 Shugo Maeda #+ #+ * lib/net/smtp.rb (getok, get_response): raise an ArgumentError when #+ CR or LF is included in a line, because they are not allowed in #+ RFC5321. #+ # Tue Jun 7 21:27:25 2016 Kazuki Yamaguchi # # * test/rubygems/*_{cert,cert_32}.pem: Regenerate test certificates for Index: ruby1.9.1-1.9.3.484/lib/net/smtp.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/net/smtp.rb 2017-06-16 14:49:32.980579001 -0400 +++ ruby1.9.1-1.9.3.484/lib/net/smtp.rb 2017-06-16 14:49:32.976578954 -0400 @@ -909,7 +909,15 @@ module Net private + def validate_line(line) + # A bare CR or LF is not allowed in RFC5321. + if /[\r\n]/ =~ line + raise ArgumentError, "A line must not contain CR or LF" + end + end + def getok(reqline) + validate_line reqline res = critical { @socket.writeline reqline recv_response() @@ -919,6 +927,7 @@ module Net end def get_response(reqline) + validate_line reqline @socket.writeline reqline recv_response() end Index: ruby1.9.1-1.9.3.484/test/net/smtp/test_smtp.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/net/smtp/test_smtp.rb 2017-06-19 12:19:22.173263990 -0400 +++ ruby1.9.1-1.9.3.484/test/net/smtp/test_smtp.rb 2017-06-19 12:19:58.425691255 -0400 @@ -1,8 +1,29 @@ +# frozen_string_literal: false require 'net/smtp' -require 'minitest/autorun' +require 'stringio' +require 'test/unit' module Net - class TestSMTP < MiniTest::Unit::TestCase + class TestSMTP < Test::Unit::TestCase + class FakeSocket + attr_reader :write_io + + def initialize out = "250 OK\n" + @write_io = StringIO.new + @read_io = StringIO.new out + end + + def writeline line + @write_io.write "#{line}\r\n" + end + + def readline + line = @read_io.gets + raise 'ran out of input' unless line + line.chop + end + end + def test_esmtp smtp = Net::SMTP.new 'localhost', 25 assert smtp.esmtp @@ -12,5 +33,50 @@ module Net assert_equal 'omg', smtp.esmtp assert_equal 'omg', smtp.esmtp? end + + def test_mailfrom + sock = FakeSocket.new + smtp = Net::SMTP.new 'localhost', 25 + smtp.instance_variable_set :@socket, sock + assert smtp.mailfrom("foo@example.com").success? + assert_equal "MAIL FROM:\r\n", sock.write_io.string + end + + def test_rcptto + sock = FakeSocket.new + smtp = Net::SMTP.new 'localhost', 25 + smtp.instance_variable_set :@socket, sock + assert smtp.rcptto("foo@example.com").success? + assert_equal "RCPT TO:\r\n", sock.write_io.string + end + + def test_auth_plain + sock = FakeSocket.new + smtp = Net::SMTP.new 'localhost', 25 + smtp.instance_variable_set :@socket, sock + assert smtp.auth_plain("foo", "bar").success? + assert_equal "AUTH PLAIN AGZvbwBiYXI=\r\n", sock.write_io.string + end + + def test_crlf_injection + smtp = Net::SMTP.new 'localhost', 25 + smtp.instance_variable_set :@socket, FakeSocket.new + + assert_raise(ArgumentError) do + smtp.mailfrom("foo\r\nbar") + end + + assert_raise(ArgumentError) do + smtp.mailfrom("foo\rbar") + end + + assert_raise(ArgumentError) do + smtp.mailfrom("foo\nbar") + end + + assert_raise(ArgumentError) do + smtp.rcptto("foo\r\nbar") + end + end end end debian/patches/100518_r27464_threading_non-nptl.diff0000775000000000000000000000504312247132667017030 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 100518_r27464_threading_non-nptl.dpatch by Lucas Nussbaum ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Fixes threading issues on non-NPTL platforms. ## DP: backport from upstream. ## DP: git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@27464 ## DP: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542927 ## DP: http://redmine.ruby-lang.org/issues/show/2025 @DPATCH@ Index: b/process.c =================================================================== --- a/process.c 2010-07-20 21:45:44.000000000 +0900 +++ b/process.c 2010-07-20 21:46:19.000000000 +0900 @@ -2383,9 +2383,6 @@ switch (pid = rb_fork(0, 0, 0, Qnil)) { case 0: -#ifdef linux - after_exec(); -#endif rb_thread_atfork(); if (rb_block_given_p()) { int status; Index: b/signal.c =================================================================== --- a/signal.c 2010-07-20 21:45:44.000000000 +0900 +++ b/signal.c 2010-07-20 21:46:19.000000000 +0900 @@ -876,11 +876,7 @@ trap_ensure(struct trap_arg *arg) { /* enable interrupt */ -#ifdef HAVE_SIGPROCMASK - sigprocmask(SIG_SETMASK, &arg->mask, NULL); -#else - sigsetmask(arg->mask); -#endif + pthread_sigmask(SIG_SETMASK, &arg->mask, NULL); trap_last_mask = arg->mask; return 0; } @@ -890,11 +886,7 @@ rb_trap_restore_mask(void) { #if USE_TRAP_MASK -# ifdef HAVE_SIGPROCMASK - sigprocmask(SIG_SETMASK, &trap_last_mask, NULL); -# else - sigsetmask(trap_last_mask); -# endif + pthread_sigmask(SIG_SETMASK, &trap_last_mask, NULL); #endif } @@ -954,12 +946,8 @@ } #if USE_TRAP_MASK /* disable interrupt */ -# ifdef HAVE_SIGPROCMASK sigfillset(&arg.mask); - sigprocmask(SIG_BLOCK, &arg.mask, &arg.mask); -# else - arg.mask = sigblock(~0); -# endif + pthread_sigmask(SIG_BLOCK, &arg.mask, &arg.mask); return rb_ensure(trap, (VALUE)&arg, trap_ensure, (VALUE)&arg); #else @@ -1014,12 +1002,8 @@ #if USE_TRAP_MASK /* disable interrupt */ -# ifdef HAVE_SIGPROCMASK sigfillset(&mask); - sigprocmask(SIG_BLOCK, &mask, &mask); -# else - mask = sigblock(~0); -# endif + pthread_sigmask(SIG_BLOCK, &mask, &mask); #endif oldfunc = ruby_signal(sig, SIG_DFL); @@ -1030,13 +1014,8 @@ } #if USE_TRAP_MASK -#ifdef HAVE_SIGPROCMASK sigdelset(&mask, sig); - sigprocmask(SIG_SETMASK, &mask, NULL); -#else - mask &= ~sigmask(sig); - sigsetmask(mask); -#endif + pthread_sigmask(SIG_SETMASK, &mask, NULL); trap_last_mask = mask; #endif } debian/patches/20131218-stack-size.patch0000664000000000000000000000136112254302344014614 0ustar Fri May 18 17:25:33 2012 KOSAKI Motohiro * cont.c: bump up fiber machine stack size when running on 64bit arch. [Bug #6344] [ruby-dev:45554] Index: cont.c =================================================================== --- a/cont.c (revision 35693) +++ b/cont.c (revision 35694) @@ -47,9 +47,14 @@ #define RB_PAGE_SIZE (pagesize) #define RB_PAGE_MASK (~(RB_PAGE_SIZE - 1)) static long pagesize; -#define FIBER_MACHINE_STACK_ALLOCATION_SIZE (0x10000) -#endif + #if SIZEOF_VOIDP==8 + #define FIBER_MACHINE_STACK_ALLOCATION_SIZE (0x100000) + #else + #define FIBER_MACHINE_STACK_ALLOCATION_SIZE (0x10000) + #endif +#endif /*FIBER_USE_NATIVE*/ + #define CAPTURE_JUST_VALID_VM_STACK 1 enum context_type { debian/patches/CVE-2018-8780.patch0000664000000000000000000000626613265125220013261 0ustar Backported of: From 143eb22f1877815dd802f7928959c5f93d4c7bb3 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:27:51 +0000 Subject: [PATCH] merge revision(s) 62989: dir.c: check NUL bytes * dir.c (GlobPathValue): should be used in rb_push_glob only. other methods should use FilePathValue. https://hackerone.com/reports/302338 * dir.c (rb_push_glob): expand GlobPathValue git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- dir.c | 22 ++++++++++------------ test/ruby/test_dir.rb | 5 ++++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/dir.c b/dir.c index 0031f89..34a55a6 100644 --- a/dir.c +++ b/dir.c @@ -356,15 +356,6 @@ static const rb_data_type_t dir_data_type = { static VALUE dir_close(VALUE); -#define GlobPathValue(str, safe) \ - /* can contain null bytes as separators */ \ - (!RB_TYPE_P((str), T_STRING) ? \ - (void)FilePathValue(str) : \ - (void)(check_safe_glob((str), (safe)), \ - check_glob_encoding(str), (str))) -#define check_safe_glob(str, safe) ((safe) ? rb_check_safe_obj(str) : (void)0) -#define check_glob_encoding(str) rb_enc_check((str), rb_enc_from_encoding(rb_usascii_encoding())) - static VALUE dir_s_alloc(VALUE klass) { @@ -406,7 +397,7 @@ dir_initialize(int argc, VALUE *argv, VALUE dir) } } - GlobPathValue(dirname, FALSE); + FilePathValue(dirname); orig = rb_str_dup_frozen(dirname); dirname = rb_str_encode_ospath(dirname); dirname = rb_str_dup_frozen(dirname); @@ -1694,7 +1685,14 @@ rb_push_glob(VALUE str, int flags) /* '\0' is delimiter */ long offset = 0; VALUE ary; - GlobPathValue(str, TRUE); + /* can contain null bytes as separators */ + if (!RB_TYPE_P((str), T_STRING)) { + FilePathValue(str); + } + else { + rb_check_safe_obj(str); + rb_enc_check(str, rb_enc_from_encoding(rb_usascii_encoding())); + } ary = rb_ary_new(); while (offset < RSTRING_LEN(str)) { @@ -1724,7 +1722,7 @@ dir_globs(long argc, VALUE *argv, int flags) for (i = 0; i < argc; ++i) { int status; VALUE str = argv[i]; - GlobPathValue(str, TRUE); + FilePathValue(str); status = push_glob(ary, str, flags); if (status) GLOB_JUMP_TAG(status); } diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb index b688cc4..684f822 100644 --- a/test/ruby/test_dir.rb +++ b/test/ruby/test_dir.rb @@ -164,7 +164,9 @@ class TestDir < Test::Unit::TestCase assert_equal([File.join(@root, "a")], Dir.glob(File.join(@root, 'a\\'))) assert_equal((?a..?f).map {|f| File.join(@root, f) }.sort, Dir.glob(File.join(@root, '[abc/def]')).sort) - + assert_raise(ArgumentError) { + Dir.glob([[@root, File.join(@root, "*")].join("\0")]) + } d = "\u{3042}\u{3044}".encode("utf-16le") assert_raise(Encoding::CompatibilityError) {Dir.glob(d)} m = Class.new {define_method(:to_path) {d}} @@ -187,6 +189,7 @@ class TestDir < Test::Unit::TestCase def test_foreach assert_equal(Dir.foreach(@root).to_a.sort, %w(. ..) + (?a..?z).to_a) + assert_raise(ArgumentError) {Dir.foreach(@root+"\0").to_a} end def test_dir_enc -- 2.7.4 debian/patches/fixing_expired_SSL_certificates.patch0000664000000000000000000003705013453430051020115 0ustar From be49c4535cf4ea2213f5a184b791e8f8f36b77e0 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Sat, 23 Feb 2019 18:29:14 -0300 Subject: [PATCH] imap: update test certificate This is a backport of the corresponding change in ruby2.5, where the corresponding files were copied here. The new test files were copied from the ones provided by the following upstream commits: https://github.com/ruby/ruby/commit/f234e6c3d3170f37508e214cdaef78d4b2584e5a https://github.com/ruby/ruby/commit/1e0b49a293d3792826c67b7e05c5fcbd09c9ea6e Closes: #919999 --- test/net/imap/cacert.pem | 86 ++++++++---------------------- test/net/imap/server.crt | 110 +++++++++++++++++++++++++-------------- test/net/imap/server.key | 43 +++++++++------ 3 files changed, 122 insertions(+), 117 deletions(-) diff --git a/test/net/imap/cacert.pem b/test/net/imap/cacert.pem index 70733878..f623bd62 100644 --- a/test/net/imap/cacert.pem +++ b/test/net/imap/cacert.pem @@ -1,66 +1,24 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b9:90:a2:bf:62:69:17:9c - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org - Validity - Not Before: Jan 3 01:34:17 2014 GMT - Not After : Jan 2 01:34:17 2019 GMT - Subject: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:db:75:d0:45:de:b1:df:bf:71:a0:0e:b0:a5:e6: - bc:f4:1c:9d:e5:25:67:64:c5:7b:cb:f1:af:c6:be: - 9a:aa:ea:7e:0f:cc:05:af:ef:40:69:06:b2:c9:13: - 9d:7e:eb:a2:06:e2:ea:7d:07:c7:c7:99:c7:fb:d5: - b8:eb:63:77:62:2b:18:12:c3:53:58:d0:f5:c7:40: - 0c:01:d1:26:82:34:16:09:e3:dc:65:f4:dc:bb:5d: - a5:41:60:e7:a9:74:ba:d7:4c:b6:a3:9c:c5:8c:89: - af:cb:e8:9f:05:fe:ea:fe:64:24:bf:e7:ed:e3:f6: - d0:fc:d6:eb:fc:06:82:10:fb - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - E8:7E:58:AC:13:7B:03:22:8D:9E:AF:32:0B:84:89:80:80:0C:1E:C2 - X509v3 Authority Key Identifier: - keyid:E8:7E:58:AC:13:7B:03:22:8D:9E:AF:32:0B:84:89:80:80:0C:1E:C2 - DirName:/C=JP/ST=Shimane/L=Matz-e city/O=Ruby Core Team/CN=Ruby Test CA/emailAddress=security@ruby-lang.org - serial:B9:90:A2:BF:62:69:17:9C - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - 8f:77:06:4e:31:72:12:ee:68:09:70:27:d4:31:85:ef:10:95: - f9:0f:2b:66:63:08:37:88:6e:b7:9b:40:3e:18:77:33:86:e8: - 61:6a:b7:3c:cb:c7:a6:d6:d5:92:6a:1f:56:d0:9f:5c:32:56: - d3:37:52:fe:0e:20:c2:7a:0d:fe:2d:3c:81:da:b8:7f:4d:6a: - 08:01:d9:be:7a:a2:15:be:a6:ce:49:64:90:8c:9a:ca:6e:2e: - 84:48:1d:94:19:56:94:46:aa:25:9b:68:c2:80:60:bf:cb:2e: - 35:03:ea:0a:65:5a:33:38:c6:cc:81:46:c0:bc:36:86:96:39: - 10:7d -----BEGIN CERTIFICATE----- -MIIDjTCCAvagAwIBAgIJALmQor9iaRecMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD -VQQGEwJKUDEQMA4GA1UECBMHU2hpbWFuZTEUMBIGA1UEBxMLTWF0ei1lIGNpdHkx -FzAVBgNVBAoTDlJ1YnkgQ29yZSBUZWFtMRUwEwYDVQQDEwxSdWJ5IFRlc3QgQ0Ex -JTAjBgkqhkiG9w0BCQEWFnNlY3VyaXR5QHJ1YnktbGFuZy5vcmcwHhcNMTQwMTAz -MDEzNDE3WhcNMTkwMTAyMDEzNDE3WjCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgT -B1NoaW1hbmUxFDASBgNVBAcTC01hdHotZSBjaXR5MRcwFQYDVQQKEw5SdWJ5IENv -cmUgVGVhbTEVMBMGA1UEAxMMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz -ZWN1cml0eUBydWJ5LWxhbmcub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQDbddBF3rHfv3GgDrCl5rz0HJ3lJWdkxXvL8a/Gvpqq6n4PzAWv70BpBrLJE51+ -66IG4up9B8fHmcf71bjrY3diKxgSw1NY0PXHQAwB0SaCNBYJ49xl9Ny7XaVBYOep -dLrXTLajnMWMia/L6J8F/ur+ZCS/5+3j9tD81uv8BoIQ+wIDAQABo4H0MIHxMB0G -A1UdDgQWBBToflisE3sDIo2erzILhImAgAwewjCBwQYDVR0jBIG5MIG2gBToflis -E3sDIo2erzILhImAgAwewqGBkqSBjzCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgT -B1NoaW1hbmUxFDASBgNVBAcTC01hdHotZSBjaXR5MRcwFQYDVQQKEw5SdWJ5IENv -cmUgVGVhbTEVMBMGA1UEAxMMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz -ZWN1cml0eUBydWJ5LWxhbmcub3JnggkAuZCiv2JpF5wwDAYDVR0TBAUwAwEB/zAN -BgkqhkiG9w0BAQUFAAOBgQCPdwZOMXIS7mgJcCfUMYXvEJX5DytmYwg3iG63m0A+ -GHczhuhharc8y8em1tWSah9W0J9cMlbTN1L+DiDCeg3+LTyB2rh/TWoIAdm+eqIV -vqbOSWSQjJrKbi6ESB2UGVaURqolm2jCgGC/yy41A+oKZVozOMbMgUbAvDaGljkQ -fQ== +MIID7TCCAtWgAwIBAgIJAIltvxrFAuSnMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD +VQQGEwJKUDEQMA4GA1UECAwHU2hpbWFuZTEUMBIGA1UEBwwLTWF0ei1lIGNpdHkx +FzAVBgNVBAoMDlJ1YnkgQ29yZSBUZWFtMRUwEwYDVQQDDAxSdWJ5IFRlc3QgQ0Ex +JTAjBgkqhkiG9w0BCQEWFnNlY3VyaXR5QHJ1YnktbGFuZy5vcmcwHhcNMTkwMTAy +MDI1ODI4WhcNMjQwMTAxMDI1ODI4WjCBjDELMAkGA1UEBhMCSlAxEDAOBgNVBAgM +B1NoaW1hbmUxFDASBgNVBAcMC01hdHotZSBjaXR5MRcwFQYDVQQKDA5SdWJ5IENv +cmUgVGVhbTEVMBMGA1UEAwwMUnVieSBUZXN0IENBMSUwIwYJKoZIhvcNAQkBFhZz +ZWN1cml0eUBydWJ5LWxhbmcub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAznlbjRVhz1NlutHVrhcGnK8W0qug2ujKXv1njSC4U6nJF6py7I9EeehV +SaKePyv+I9z3K1LnfUHOtUbdwdKC77yN66A6q2aqzu5q09/NSykcZGOIF0GuItYI +3nvW3IqBddff2ffsyR+9pBjfb5AIPP08WowF9q4s1eGULwZc4w2B8PFhtxYANd7d +BvGLXFlcufv9tDtzyRi4t7eqxCRJkZQIZNZ6DHHIJrNxejOILfHLarI12yk8VK6L +2LG4WgGqyeePiRyd1o1MbuiAFYqAwpXNUbRKg5NaZGwBHZk8UZ+uFKt1QMBURO5R +WFy1c349jbWszTqFyL4Lnbg9HhAowQIDAQABo1AwTjAdBgNVHQ4EFgQU9tEiKdU9 +I9derQyc5nWPnc34nVMwHwYDVR0jBBgwFoAU9tEiKdU9I9derQyc5nWPnc34nVMw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAxj7F/u3C3fgq24N7hGRA +of7ClFQxGmo/IGT0AISzW3HiVYiFaikKhbO1NwD9aBpD8Zwe62sCqMh8jGV/b0+q +aOORnWYNy2R6r9FkASAglmdF6xn3bhgGD5ls4pCvcG9FynGnGc24g6MrjFNrBYUS +2iIZsg36i0IJswo/Dy6HLphCms2BMCD3DeWtfjePUiTmQHJo6HsQIKP/u4N4Fvee +uMBInei2M4VU74fLXbmKl1F9AEX7JDP3BKSZG19Ch5pnUo4uXM1uNTGsi07P4Y0s +K44+SKBC0bYEFbDK0eQWMrX3kIhkPxyIWhxdq9/NqPYjShuSEAhA6CSpmRg0pqc+ +mA== -----END CERTIFICATE----- diff --git a/test/net/imap/server.crt b/test/net/imap/server.crt index fa4f9949..5ca78a6d 100644 --- a/test/net/imap/server.crt +++ b/test/net/imap/server.crt @@ -1,48 +1,82 @@ Certificate: Data: - Version: 1 (0x0) - Serial Number: 0 (0x0) - Signature Algorithm: sha1WithRSAEncryption + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, ST=Shimane, L=Matz-e city, O=Ruby Core Team, CN=Ruby Test CA/emailAddress=security@ruby-lang.org Validity - Not Before: Jan 3 01:34:17 2014 GMT - Not After : Jan 2 01:34:17 2019 GMT + Not Before: Jan 2 03:27:13 2019 GMT + Not After : Jan 1 03:27:13 2024 GMT Subject: C=JP, ST=Shimane, O=Ruby Core Team, OU=Ruby Test, CN=localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:db:75:d0:45:de:b1:df:bf:71:a0:0e:b0:a5:e6: - bc:f4:1c:9d:e5:25:67:64:c5:7b:cb:f1:af:c6:be: - 9a:aa:ea:7e:0f:cc:05:af:ef:40:69:06:b2:c9:13: - 9d:7e:eb:a2:06:e2:ea:7d:07:c7:c7:99:c7:fb:d5: - b8:eb:63:77:62:2b:18:12:c3:53:58:d0:f5:c7:40: - 0c:01:d1:26:82:34:16:09:e3:dc:65:f4:dc:bb:5d: - a5:41:60:e7:a9:74:ba:d7:4c:b6:a3:9c:c5:8c:89: - af:cb:e8:9f:05:fe:ea:fe:64:24:bf:e7:ed:e3:f6: - d0:fc:d6:eb:fc:06:82:10:fb + Public-Key: (2048 bit) + Modulus: + 00:e8:da:9c:01:2e:2b:10:ec:49:cd:5e:07:13:07: + 9c:70:9e:c6:74:bc:13:c2:e1:6f:c6:82:fd:e3:48: + e0:2c:a5:68:c7:9e:42:de:60:54:65:e6:6a:14:57: + 7a:30:d0:cc:b5:b6:d9:c3:d2:df:c9:25:97:54:67: + cf:f6:be:5e:cb:8b:ee:03:c5:e1:e2:f9:e7:f7:d1: + 0c:47:f0:b8:da:33:5a:ad:41:ad:e7:b5:a2:7b:b7: + bf:30:da:60:f8:e3:54:a2:bc:3a:fd:1b:74:d9:dc: + 74:42:e9:29:be:df:ac:b4:4f:eb:32:f4:06:f1:e1: + 8c:4b:a8:8b:fb:29:e7:b1:bf:1d:01:ee:73:0f:f9: + 40:dc:d5:15:79:d9:c6:73:d0:c0:dd:cb:e4:da:19: + 47:80:c6:14:04:72:fd:9a:7c:8f:11:82:76:49:04: + 79:cc:f2:5c:31:22:95:13:3e:5d:40:a6:4d:e0:a3: + 02:26:7d:52:3b:bb:ed:65:a1:0f:ed:6b:b0:3c:d4: + de:61:15:5e:d3:dd:68:09:9f:4a:57:a5:c2:a9:6d: + 86:92:c5:f4:a4:d4:b7:13:3b:52:63:24:05:e2:cc: + e3:8a:3c:d4:35:34:2b:10:bb:58:72:e7:e1:8d:1d: + 74:8c:61:16:20:3d:d0:1c:4e:8f:6e:fd:fe:64:10: + 4f:41 Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 85:f5:d3:05:8b:8c:f4:43:1c:88:f2:8f:b2:f2:93:77:b7:3d: - 95:c6:a0:34:bc:33:6a:d8:85:5f:3e:86:08:10:c5:5c:c1:76: - a3:53:3c:dc:38:98:23:97:e7:da:21:ac:e8:4d:3c:96:70:29: - ff:ff:1e:4a:9a:17:2b:db:04:62:b9:ef:ab:ea:a7:a5:e8:7c: - b1:d5:ed:30:a8:6c:78:de:51:7e:e3:8a:c2:a4:64:a8:63:a2: - bc:fd:43:9c:f3:55:7d:54:c9:6a:d8:53:1c:4b:6b:03:aa:b6: - 19:e6:a4:4f:47:00:96:c5:42:59:85:4e:c3:4e:cd:41:82:53: - 10:f8 + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + ED:28:C2:7E:AB:4B:C8:E8:FE:55:6D:66:95:31:1C:2D:60:F9:02:36 + X509v3 Authority Key Identifier: + keyid:F6:D1:22:29:D5:3D:23:D7:5E:AD:0C:9C:E6:75:8F:9D:CD:F8:9D:53 + + Signature Algorithm: sha256WithRSAEncryption + 1d:b8:c5:8b:72:41:20:65:ad:27:6f:15:63:06:26:12:8d:9c: + ad:ca:f4:db:97:b4:90:cb:ff:35:94:bb:2a:a7:a1:ab:1e:35: + 2d:a5:3f:c9:24:b0:1a:58:89:75:3e:81:0a:2c:4f:98:f9:51: + fb:c0:a3:09:d0:0a:9b:e7:a2:b7:c3:60:40:c8:f4:6d:b2:6a: + 56:12:17:4c:00:24:31:df:9c:60:ae:b1:68:54:a9:e6:b5:4a: + 04:e6:92:05:86:d9:5a:dc:96:30:a5:58:de:14:99:0f:e5:15: + 89:3e:9b:eb:80:e3:bd:83:c3:ea:33:35:4b:3e:2f:d3:0d:64: + 93:67:7f:8d:f5:3f:0c:27:bc:37:5a:cc:d6:47:16:af:5a:62: + d2:da:51:f8:74:06:6b:24:ad:28:68:08:98:37:7d:ed:0e:ab: + 1e:82:61:05:d0:ba:75:a0:ab:21:b0:9a:fd:2b:54:86:1d:0d: + 1f:c2:d4:77:1f:72:26:5e:ad:8a:9f:09:36:6d:44:be:74:c2: + 5a:3e:ff:5c:9d:75:d6:38:7b:c5:39:f9:44:6e:a1:d1:8e:ff: + 63:db:c4:bb:c6:91:92:ca:5c:60:9b:1d:eb:0a:de:08:ee:bf: + da:76:03:65:62:29:8b:f8:7f:c7:86:73:1e:f6:1f:2d:89:69: + fd:be:bd:6e -----BEGIN CERTIFICATE----- -MIICXDCCAcUCAQAwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAkpQMRAwDgYD -VQQIEwdTaGltYW5lMRQwEgYDVQQHEwtNYXR6LWUgY2l0eTEXMBUGA1UEChMOUnVi -eSBDb3JlIFRlYW0xFTATBgNVBAMTDFJ1YnkgVGVzdCBDQTElMCMGCSqGSIb3DQEJ -ARYWc2VjdXJpdHlAcnVieS1sYW5nLm9yZzAeFw0xNDAxMDMwMTM0MTdaFw0xOTAx -MDIwMTM0MTdaMGAxCzAJBgNVBAYTAkpQMRAwDgYDVQQIEwdTaGltYW5lMRcwFQYD -VQQKEw5SdWJ5IENvcmUgVGVhbTESMBAGA1UECxMJUnVieSBUZXN0MRIwEAYDVQQD -Ewlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANt10EXesd+/ -caAOsKXmvPQcneUlZ2TFe8vxr8a+mqrqfg/MBa/vQGkGsskTnX7rogbi6n0Hx8eZ -x/vVuOtjd2IrGBLDU1jQ9cdADAHRJoI0Fgnj3GX03LtdpUFg56l0utdMtqOcxYyJ -r8vonwX+6v5kJL/n7eP20PzW6/wGghD7AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEA -hfXTBYuM9EMciPKPsvKTd7c9lcagNLwzatiFXz6GCBDFXMF2o1M83DiYI5fn2iGs -6E08lnAp//8eSpoXK9sEYrnvq+qnpeh8sdXtMKhseN5RfuOKwqRkqGOivP1DnPNV -fVTJathTHEtrA6q2GeakT0cAlsVCWYVOw07NQYJTEPg= +MIID4zCCAsugAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBjDELMAkGA1UEBhMCSlAx +EDAOBgNVBAgMB1NoaW1hbmUxFDASBgNVBAcMC01hdHotZSBjaXR5MRcwFQYDVQQK +DA5SdWJ5IENvcmUgVGVhbTEVMBMGA1UEAwwMUnVieSBUZXN0IENBMSUwIwYJKoZI +hvcNAQkBFhZzZWN1cml0eUBydWJ5LWxhbmcub3JnMB4XDTE5MDEwMjAzMjcxM1oX +DTI0MDEwMTAzMjcxM1owYDELMAkGA1UEBhMCSlAxEDAOBgNVBAgMB1NoaW1hbmUx +FzAVBgNVBAoMDlJ1YnkgQ29yZSBUZWFtMRIwEAYDVQQLDAlSdWJ5IFRlc3QxEjAQ +BgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AOjanAEuKxDsSc1eBxMHnHCexnS8E8Lhb8aC/eNI4CylaMeeQt5gVGXmahRXejDQ +zLW22cPS38kll1Rnz/a+XsuL7gPF4eL55/fRDEfwuNozWq1Bree1onu3vzDaYPjj +VKK8Ov0bdNncdELpKb7frLRP6zL0BvHhjEuoi/sp57G/HQHucw/5QNzVFXnZxnPQ +wN3L5NoZR4DGFARy/Zp8jxGCdkkEeczyXDEilRM+XUCmTeCjAiZ9Uju77WWhD+1r +sDzU3mEVXtPdaAmfSlelwqlthpLF9KTUtxM7UmMkBeLM44o81DU0KxC7WHLn4Y0d +dIxhFiA90BxOj279/mQQT0ECAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhC +AQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFO0o +wn6rS8jo/lVtZpUxHC1g+QI2MB8GA1UdIwQYMBaAFPbRIinVPSPXXq0MnOZ1j53N ++J1TMA0GCSqGSIb3DQEBCwUAA4IBAQAduMWLckEgZa0nbxVjBiYSjZytyvTbl7SQ +y/81lLsqp6GrHjUtpT/JJLAaWIl1PoEKLE+Y+VH7wKMJ0Aqb56K3w2BAyPRtsmpW +EhdMACQx35xgrrFoVKnmtUoE5pIFhtla3JYwpVjeFJkP5RWJPpvrgOO9g8PqMzVL +Pi/TDWSTZ3+N9T8MJ7w3WszWRxavWmLS2lH4dAZrJK0oaAiYN33tDqsegmEF0Lp1 +oKshsJr9K1SGHQ0fwtR3H3ImXq2Knwk2bUS+dMJaPv9cnXXWOHvFOflEbqHRjv9j +28S7xpGSylxgmx3rCt4I7r/adgNlYimL+H/HhnMe9h8tiWn9vr1u -----END CERTIFICATE----- diff --git a/test/net/imap/server.key b/test/net/imap/server.key index 7c57546e..7f2380e7 100644 --- a/test/net/imap/server.key +++ b/test/net/imap/server.key @@ -1,15 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDbddBF3rHfv3GgDrCl5rz0HJ3lJWdkxXvL8a/Gvpqq6n4PzAWv -70BpBrLJE51+66IG4up9B8fHmcf71bjrY3diKxgSw1NY0PXHQAwB0SaCNBYJ49xl -9Ny7XaVBYOepdLrXTLajnMWMia/L6J8F/ur+ZCS/5+3j9tD81uv8BoIQ+wIDAQAB -AoGAGtYHR+P5gFDaxiXFuCPFC1zMeg7e29XCU6gURIteQnQ2QhxCvcbV64HkLu51 -HeYWhB0Pa4aeCWxmpgb2e+JH4MEoIjeJSGyZQeqwkQLgWJDdvkgWx5am58QzA60I -ipkZ9QHcPffSs5RiGx4yfr58KqAmwFphGCY8W7v4LqaENdECQQD9H5VTW9g4gj1c -j3uNYvSI/D7a9P7gfI+ziczuwMm5xsBx3D/t5TAr3SJKNne3sl1E6ZERCUbzxf+C -k58EiHx1AkEA3fRLGqDOq7EcQhbjTcA/v/t5MwlGEUsS9+XrqOWn50YuoIwRZJ3v -qHRQzfQfFNklGtfBvwQ4md3irXjMeGVprwJBAMEAuwiDiHuV+xm/ofKtmE13IKot -ksYy1BOOp/8IawhHXueyi+BmF/PqOkIiA+jCjNGF0oIN89beizPSQbbgJx0CQG/K -qL1bu1ys0y/SeWBi8XkP/0aeaCUzq/UiYCTsrzoEll2UzvnftqMhGsXxLGqCyHaR -r2s3hA6zvIVlL4+AfM8CQQClq+WDrC5VKciLYakZNWJjV1m+H2Ut/0fXdUjKHajE -FWLcsrOhADf6bkTb71GwPxnKRkkRmud5upP0ZYYTqM4X ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDo2pwBLisQ7EnN +XgcTB5xwnsZ0vBPC4W/Ggv3jSOAspWjHnkLeYFRl5moUV3ow0My1ttnD0t/JJZdU +Z8/2vl7Li+4DxeHi+ef30QxH8LjaM1qtQa3ntaJ7t78w2mD441SivDr9G3TZ3HRC +6Sm+36y0T+sy9Abx4YxLqIv7Keexvx0B7nMP+UDc1RV52cZz0MDdy+TaGUeAxhQE +cv2afI8RgnZJBHnM8lwxIpUTPl1Apk3gowImfVI7u+1loQ/ta7A81N5hFV7T3WgJ +n0pXpcKpbYaSxfSk1LcTO1JjJAXizOOKPNQ1NCsQu1hy5+GNHXSMYRYgPdAcTo9u +/f5kEE9BAgMBAAECggEBAOHkwhc7DLh8IhTDNSW26oMu5OP2WU1jmiYAigDmf+OQ +DBgrZj+JQBci8qINQxL8XLukSZn5hvQCLc7Kbyu1/wyEEUFDxSGGwwzclodr9kho +LX2LDASPZrOSzD2+fPi2wTKmXKuS6Uc44OjQfZkYMNkz9r4Vkm8xGgOD3VipjIYX +QXlhhdqkXZcNABsihCV52GKkDFSVm8jv95YJc5xhoYCy/3a4/qPdF0aT2R7oYUej +hKrxVDskyooe8Zg/JTydZNV5GQEDmW01/K3r6XGT26oPi1AqMU1gtv/jkW56CRQQ +1got8smnqM+AV7Slf9R6DauIPdQJ2S8wsr/o8ISBsOECgYEA9YrqEP2gAYSGFXRt +liw0WI2Ant8BqXS6yvq1jLo/qWhLw/ph4Di73OQ2mpycVTpgfGr2wFPQR1XJ+0Fd +U+Ir/C3Q7FK4VIGHK7B0zNvZr5tEjlFfeRezo2JMVw5YWeSagIFcSwK+KqCTH9qc +pw/Eb8nB/4XNcpTZu7Fg0Wc+ooUCgYEA8sVaicn1Wxkpb45a4qfrA6wOr5xdJ4cC +A5qs7vjX2OdPIQOmoQhdI7bCWFXZzF33wA4YCws6j5wRaySLIJqdms8Gl9QnODy1 +ZlA5gwKToBC/jqPmWAXSKb8EH7cHilaxU9OKnQ7CfwlGLHqjMtjrhR7KHlt3CVRs +oRmvsjZVXI0CgYAmPedslAO6mMhFSSfULrhMXmV82OCqYrrA6EEkVNGbcdnzAOkD +gfKIWabDd8bFY10po4Mguy0CHzNhBXIioWQWV5BlbhC1YKMLw+S9DzSdLAKGY9gJ +xQ4+UQ3wtRQ/k+IYR413RUsW2oFvgZ3KSyNeAb9MK6uuv84VdG/OzVSs/QKBgQDn +kap//l2EbObiWyaERunckdVcW0lcN+KK75J/TGwPoOwQsLvTpPe65kxRGGrtDsEQ +uCDk/+v3KkZPLgdrrTAih9FhJ+PVN8tMcb+6IM4SA4fFFr/UPJEwct0LJ3oQ0grJ +y+HPWFHb/Uurh7t99/4H98uR02sjQh1wOeEmm78mzQKBgQDm+LzGH0se6CXQ6cdZ +g1JRZeXkDEsrW3hfAsW62xJQmXcWxBoblP9OamMY+A06rM5og3JbDk5Zm6JsOaA8 +wS2gw4ilp46jors4eQey8ux7kB9LzdBoDBBElnsbjLO8oBNZlVcYXg+6BOl/CUi7 +2whRF0FEjKA8ehrNhAq+VFfFNw== +-----END PRIVATE KEY----- -- 2.20.1 debian/patches/CVE-2018-1000077.patch0000664000000000000000000000403413260717556013476 0ustar Backported of: From feadefc2d351dcb95d6492f5ad17ebca546eb964 Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Fri, 2 Feb 2018 00:09:29 -0500 Subject: [PATCH] Enforce URL validation on spec homepage attribute diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 2ec1228..7a9aa92 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -8,6 +8,7 @@ require 'rubygems/version' require 'rubygems/requirement' require 'rubygems/platform' require "rubygems/deprecate" +require 'uri' # :stopdoc: class Date; end # for ruby_code if date.rb wasn't required @@ -2098,10 +2099,16 @@ class Gem::Specification raise Gem::InvalidSpecificationException, "#{lazy} is not a summary" end - if homepage and not homepage.empty? and - homepage !~ /\A[a-z][a-z\d+.-]*:/i then - raise Gem::InvalidSpecificationException, - "\"#{homepage}\" is not a URI" + # Make sure a homepage is valid HTTP/HTTPS URI + if homepage and not homepage.empty? + begin + homepage_uri = URI.parse(homepage) + unless [URI::HTTP, URI::HTTPS].member? homepage_uri.class + raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a URI" + end + rescue URI::InvalidURIError + raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a URI" + end end # Warnings diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 6bdb7b8..314ab80 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -1454,6 +1454,19 @@ end end assert_equal '"over at my cool site" is not a URI', e.message + + @a1.homepage = 'ftp://rubygems.org' + + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + + assert_equal '"ftp://rubygems.org" is not a URI', e.message + + @a1.homepage = 'http://rubygems.org' + + assert_equal true, @a1.validate + end end debian/patches/CVE-2018-8779.patch0000664000000000000000000000506513265125210013264 0ustar Backported of: From 47165eed264d357e78e27371cfef20d5c2bde5d9 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 28 Mar 2018 14:36:23 +0000 Subject: [PATCH] merge revision(s) 62991,63000: unixsocket.c: check NUL bytes * ext/socket/unixsocket.c (rsock_init_unixsock): check NUL bytes. https://hackerone.com/reports/302997 unixsocket.c: abstract namespace * ext/socket/unixsocket.c (unixsock_path_value): fix r62991 for Linux abstract namespace. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/unixsocket.c | 24 +++++++++++++++++++++++- test/socket/test_unix.rb | 10 ++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/ext/socket/unixsocket.c b/ext/socket/unixsocket.c index 3c30e92..4a7e8b5 100644 --- a/ext/socket/unixsocket.c +++ b/ext/socket/unixsocket.c @@ -25,6 +25,28 @@ unixsock_connect_internal(VALUE a) arg->sockaddrlen, 0); } +static VALUE +unixsock_path_value(VALUE path) +{ +#ifdef __linux__ +#define TO_STR_FOR_LINUX_ABSTRACT_NAMESPACE 0 + + VALUE name = path; +#if TO_STR_FOR_LINUX_ABSTRACT_NAMESPACE + const int isstr = !NIL_P(name = rb_check_string_type(name)); +#else + const int isstr = RB_TYPE_P(name, T_STRING); +#endif + if (isstr) { + if (RSTRING_LEN(name) == 0 || RSTRING_PTR(name)[0] == '\0') { + rb_check_safe_obj(name); + return name; /* ignore encoding */ + } + } +#endif + return rb_get_path(path); +} + VALUE rsock_init_unixsock(VALUE sock, VALUE path, int server) { @@ -33,7 +55,7 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server) int fd, status; rb_io_t *fptr; - SafeStringValue(path); + path = unixsock_path_value(path); fd = rsock_socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) { rb_sys_fail("socket(2)"); diff --git a/test/socket/test_unix.rb b/test/socket/test_unix.rb index 3559eb8..71c8149 100644 --- a/test/socket/test_unix.rb +++ b/test/socket/test_unix.rb @@ -247,6 +247,16 @@ class TestSocket_UNIXSocket < Test::Unit::TestCase File.unlink path if path && File.socket?(path) end + def test_open_nul_byte + tmpfile = Tempfile.new("s") + path = tmpfile.path + tmpfile.close(true) + assert_raise(ArgumentError) {UNIXServer.open(path+"\0")} + assert_raise(ArgumentError) {UNIXSocket.open(path+"\0")} + ensure + File.unlink path if path && File.socket?(path) + end + def test_addr bound_unix_socket(UNIXServer) {|serv, path| c = UNIXSocket.new(path) -- 2.7.4 debian/patches/110829-freebsd_assert_normal_exit.patch0000664000000000000000000000075312247132667020015 0ustar Rejected upstream. Needed to run test suite on kfreebsd. http://redmine.ruby-lang.org/issues/5239 http://bugs.debian.org/639658 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -252,6 +252,10 @@ def assert_normal_exit(testsrc, *rest) timeout_signaled = true end status = th.value + if status.nil? # case on kfreebsd + Process.waitpid(pid) + status = $? + end ensure $stderr.reopen(old_stderr) old_stderr.close debian/patches/CVE-2017-17405.patch0000664000000000000000000000303713215776200013330 0ustar Backport of: From 6d3f72e5be2312be312f2acbf3465b05293c1431 Mon Sep 17 00:00:00 2001 From: nagachika Date: Thu, 14 Dec 2017 13:41:30 +0000 Subject: [PATCH] Fix a command injection vulnerability in Net::FTP. diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb index 149fc6a..94dcccd 100644 --- a/lib/net/ftp.rb +++ b/lib/net/ftp.rb @@ -563,10 +563,10 @@ module Net if localfile if @resume rest_offset = File.size?(localfile) - f = open(localfile, "a") + f = File.open(localfile, "a") else rest_offset = nil - f = open(localfile, "w") + f = File.open(localfile, "w") end elsif !block_given? result = "" @@ -594,7 +594,7 @@ module Net def gettextfile(remotefile, localfile = File.basename(remotefile)) # :yield: line result = nil if localfile - f = open(localfile, "w") + f = File.open(localfile, "w") elsif !block_given? result = "" end @@ -640,7 +640,7 @@ module Net else rest_offset = nil end - f = open(localfile) + f = File.open(localfile) begin f.binmode if rest_offset @@ -659,7 +659,7 @@ module Net # passing in the transmitted data one line at a time. # def puttextfile(localfile, remotefile = File.basename(localfile), &block) # :yield: line - f = open(localfile) + f = File.open(localfile) begin storlines("STOR " + remotefile, f, &block) ensure debian/patches/CVE-2017-0899-0900-0901.patch0000664000000000000000000002166713164715460014253 0ustar Description: fix CVE-2017-0899, CVE-2017-0900 and CVE-2017-0901 Backported to 1.8, minor changes, removed SRV patch and test case as support for SRV lookups is not implemented in 1.8. We also disable TLS checks that fail because of more stringent DH key parameters in TLS. Origin: upstream, https://bugs.ruby-lang.org/attachments/download/6690/rubygems-2613-ruby22.patch Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=873802 Index: ruby1.9.1-1.9.3.484/lib/rubygems/commands/query_command.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rubygems/commands/query_command.rb +++ ruby1.9.1-1.9.3.484/lib/rubygems/commands/query_command.rb @@ -182,7 +182,7 @@ class Gem::Commands::QueryCommand < Gem: end end.join ', ' - entry << " (#{list})" + entry << " (#{clean_text(list)})" end if options[:details] then @@ -251,7 +251,8 @@ class Gem::Commands::QueryCommand < Gem: end end - entry << "\n\n" << format_text(spec.summary, 68, 4) + summary = truncate_text(spec.summary, "the summary for #{spec.full_name}") + entry << "\n\n" << format_text(summary, 68, 4) end output << entry end Index: ruby1.9.1-1.9.3.484/lib/rubygems/installer.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rubygems/installer.rb +++ ruby1.9.1-1.9.3.484/lib/rubygems/installer.rb @@ -144,6 +144,8 @@ class Gem::Installer current_home = Gem.dir current_path = Gem.paths.path + verify_spec_name + verify_gem_home(options[:unpack]) Gem.use_paths gem_home, current_path # HACK: shouldn't need Gem.paths.path @@ -455,6 +457,11 @@ class Gem::Installer unpack or File.writable?(gem_home) end + def verify_spec_name + return if spec.name =~ Gem::Specification::VALID_NAME_PATTERN + raise Gem::InstallError, "#{spec} has an invalid name" + end + ## # Return the text for an application file. Index: ruby1.9.1-1.9.3.484/lib/rubygems/specification.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rubygems/specification.rb +++ ruby1.9.1-1.9.3.484/lib/rubygems/specification.rb @@ -64,6 +64,8 @@ class Gem::Specification today = Time.now.utc TODAY = Time.utc(today.year, today.month, today.day) + VALID_NAME_PATTERN = /\A[a-zA-Z0-9\.\-\_]+\z/ # :nodoc: + # :startdoc: ## @@ -2007,9 +2009,15 @@ class Gem::Specification end end - unless String === name then + if !name.is_a?(String) then + raise Gem::InvalidSpecificationException, + "invalid value for attribute name: \"#{name.inspect}\" must be a string" + elsif name !~ /[a-zA-Z]/ then + raise Gem::InvalidSpecificationException, + "invalid value for attribute name: #{name.dump} must include at least one letter" + elsif name !~ VALID_NAME_PATTERN then raise Gem::InvalidSpecificationException, - "invalid value for attribute name: \"#{name.inspect}\"" + "invalid value for attribute name: #{name.dump} can only include letters, numbers, dashes, and underscores" end if require_paths.empty? then Index: ruby1.9.1-1.9.3.484/lib/rubygems/text.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/lib/rubygems/text.rb +++ ruby1.9.1-1.9.3.484/lib/rubygems/text.rb @@ -6,12 +6,25 @@ require 'rubygems' module Gem::Text ## + # Remove any non-printable characters and make the text suitable for + # printing. + def clean_text(text) + text.gsub(/[\000-\b\v-\f\016-\037\177]/, ".".freeze) + end + + def truncate_text(text, description, max_length = 100_000) + raise ArgumentError, "max_length must be positive" unless max_length > 0 + return text if text.size <= max_length + "Truncating #{description} to #{max_length.to_s.reverse.gsub(/...(?=.)/,'\&,').reverse} characters:\n" + text[0, max_length] + end + + ## # Wraps +text+ to +wrap+ characters and optionally indents by +indent+ # characters def format_text(text, wrap, indent=0) result = [] - work = text.dup + work = clean_text(text) while work.length > wrap do if work =~ /^(.{0,#{wrap}})[ \n]/ then Index: ruby1.9.1-1.9.3.484/test/rubygems/test_gem_installer.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rubygems/test_gem_installer.rb +++ ruby1.9.1-1.9.3.484/test/rubygems/test_gem_installer.rb @@ -1041,6 +1041,27 @@ load Gem.bin_path('a', 'executable', ver refute @installer.installation_satisfies_dependency?(dep) end + def test_pre_install_checks_malicious_name + spec = util_spec '../malicious', '1' + Gem::Specification.reset + def spec.full_name # so the spec is buildable + "malicious-1" + end + def spec.validate; end + + util_build_gem spec + + gem = File.join(@gemhome, 'cache', spec.file_name) + + use_ui @ui do + @installer = Gem::Installer.at gem + e = assert_raises Gem::InstallError do + @installer.pre_install_checks + end + assert_equal '# has an invalid name', e.message + end + end + def test_shebang util_setup_install Index: ruby1.9.1-1.9.3.484/test/rubygems/test_gem_remote_fetcher.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rubygems/test_gem_remote_fetcher.rb +++ ruby1.9.1-1.9.3.484/test/rubygems/test_gem_remote_fetcher.rb @@ -744,6 +744,7 @@ gems: end def test_ssl_connection + skip 'LTS DH parameter restrictions changed' ssl_server = self.class.start_ssl_server temp_ca_cert = File.join(DIR, 'ca_cert.pem') with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher| @@ -761,6 +762,7 @@ gems: end def test_ssl_connection_allow_verify_none + skip 'LTS DH parameter restrictions changed' ssl_server = self.class.start_ssl_server with_configured_fetcher(":ssl_verify_mode: 0") do |fetcher| fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml") Index: ruby1.9.1-1.9.3.484/test/rubygems/test_gem_specification.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rubygems/test_gem_specification.rb +++ ruby1.9.1-1.9.3.484/test/rubygems/test_gem_specification.rb @@ -1465,7 +1465,37 @@ end @a1.validate end - assert_equal 'invalid value for attribute name: ":json"', e.message + assert_equal 'invalid value for attribute name: ":json" must be a string', e.message + + @a1.name = [] + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + assert_equal "invalid value for attribute name: \"[]\" must be a string", e.message + + @a1.name = "" + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + assert_equal "invalid value for attribute name: \"\" must include at least one letter", e.message + + @a1.name = "12345" + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + assert_equal "invalid value for attribute name: \"12345\" must include at least one letter", e.message + + @a1.name = "../malicious" + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + assert_equal "invalid value for attribute name: \"../malicious\" can only include letters, numbers, dashes, and underscores", e.message + + @a1.name = "\ba\t" + e = assert_raises Gem::InvalidSpecificationException do + @a1.validate + end + assert_equal "invalid value for attribute name: \"\\ba\\t\" can only include letters, numbers, dashes, and underscores", e.message end def test_validate_non_nil Index: ruby1.9.1-1.9.3.484/test/rubygems/test_gem_text.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/rubygems/test_gem_text.rb +++ ruby1.9.1-1.9.3.484/test/rubygems/test_gem_text.rb @@ -35,6 +35,10 @@ Without the wrapping, the text might not assert_equal expected, format_text(text, 78) end + def test_format_removes_nonprintable_characters + assert_equal "text with weird .. stuff .", format_text("text with weird \x1b\x02 stuff \x7f", 40) + end + def test_levenshtein_distance_add assert_equal 2, levenshtein_distance("zentest", "zntst") assert_equal 2, levenshtein_distance("zntst", "zentest") @@ -55,4 +59,11 @@ Without the wrapping, the text might not assert_equal 7, levenshtein_distance("xxxxxxx", "ZenTest") assert_equal 7, levenshtein_distance("zentest", "xxxxxxx") end + + def test_truncate_text + assert_equal "abc", truncate_text("abc", "desc") + assert_equal "Truncating desc to 2 characters:\nab", truncate_text("abc", "desc", 2) + s = "ab" * 500_001 + assert_equal "Truncating desc to 1,000,000 characters:\n#{s[0, 1_000_000]}", truncate_text(s, "desc", 1_000_000) + end end debian/patches/CVE-2015-1855.patch0000664000000000000000000003127713121756616013264 0ustar Backport of: From e9a7bcb8bf2902f907c148a00bbcf21d3fa79596 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sun, 29 Mar 2015 17:28:44 -0700 Subject: [PATCH] Stricter hostname verification following RFC 6125. Thanks to @nahi for the tests and initial documentation. --- lib/openssl/ssl.rb | 57 ++++++++++++++++++-- test/test_ssl.rb | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+), 4 deletions(-) Index: ruby1.9.1-1.9.3.484/ext/openssl/lib/openssl/ssl-internal.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/ext/openssl/lib/openssl/ssl-internal.rb 2017-06-16 14:49:08.228287275 -0400 +++ ruby1.9.1-1.9.3.484/ext/openssl/lib/openssl/ssl-internal.rb 2017-06-16 14:49:08.228287275 -0400 @@ -94,8 +94,7 @@ module OpenSSL case san.tag when 2 # dNSName in GeneralName (RFC5280) should_verify_common_name = false - reg = Regexp.escape(san.value).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname + return true if verify_hostname(hostname, san.value) when 7 # iPAddress in GeneralName (RFC5280) should_verify_common_name = false # follows GENERAL_NAME_print() in x509v3/v3_alt.c @@ -110,8 +109,7 @@ module OpenSSL if should_verify_common_name cert.subject.to_a.each{|oid, value| if oid == "CN" - reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname + return true if verify_hostname(hostname, value) end } end @@ -119,6 +117,57 @@ module OpenSSL end module_function :verify_certificate_identity + def verify_hostname(hostname, san) # :nodoc: + # RFC 5280, IA5String is limited to the set of ASCII characters + return false unless san.ascii_only? + return false unless hostname.ascii_only? + + # See RFC 6125, section 6.4.1 + # Matching is case-insensitive. + san_parts = san.downcase.split(".") + + # TODO: this behavior should probably be more strict + return san == hostname if san_parts.size < 2 + + # Matching is case-insensitive. + host_parts = hostname.downcase.split(".") + + # RFC 6125, section 6.4.3, subitem 2. + # If the wildcard character is the only character of the left-most + # label in the presented identifier, the client SHOULD NOT compare + # against anything but the left-most label of the reference + # identifier (e.g., *.example.com would match foo.example.com but + # not bar.foo.example.com or example.com). + return false unless san_parts.size == host_parts.size + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in + # which the wildcard character comprises a label other than the + # left-most label (e.g., do not match bar.*.example.net). + return false unless verify_wildcard(host_parts.shift, san_parts.shift) + + san_parts.join(".") == host_parts.join(".") + end + module_function :verify_hostname + + def verify_wildcard(domain_component, san_component) # :nodoc: + parts = san_component.split("*", -1) + + return false if parts.size > 2 + return san_component == domain_component if parts.size == 1 + + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + return false if domain_component.start_with?("xn--") && san_component != "*" + + parts[0].length + parts[1].length < domain_component.length && + domain_component.start_with?(parts[0]) && + domain_component.end_with?(parts[1]) + end + module_function :verify_wildcard + class SSLSocket include Buffering include SocketForwarder Index: ruby1.9.1-1.9.3.484/test/openssl/test_ssl.rb =================================================================== --- ruby1.9.1-1.9.3.484.orig/test/openssl/test_ssl.rb 2017-06-16 14:49:08.228287275 -0400 +++ ruby1.9.1-1.9.3.484/test/openssl/test_ssl.rb 2017-06-16 14:49:08.228287275 -0400 @@ -1,3 +1,5 @@ +# encoding: UTF-8 + require_relative "utils" if defined?(OpenSSL) @@ -363,6 +363,156 @@ class OpenSSL::TestSSL < OpenSSL::SSLTes end end + def test_verify_hostname + assert_equal(true, OpenSSL::SSL.verify_hostname("www.example.com", "*.example.com")) + assert_equal(false, OpenSSL::SSL.verify_hostname("www.subdomain.example.com", "*.example.com")) + end + + def test_verify_wildcard + assert_equal(false, OpenSSL::SSL.verify_wildcard("foo", "x*")) + assert_equal(true, OpenSSL::SSL.verify_wildcard("foo", "foo")) + assert_equal(true, OpenSSL::SSL.verify_wildcard("foo", "f*")) + assert_equal(true, OpenSSL::SSL.verify_wildcard("foo", "*")) + assert_equal(false, OpenSSL::SSL.verify_wildcard("abc*bcd", "abcd")) + assert_equal(false, OpenSSL::SSL.verify_wildcard("xn--qdk4b9b", "x*")) + assert_equal(false, OpenSSL::SSL.verify_wildcard("xn--qdk4b9b", "*--qdk4b9b")) + assert_equal(true, OpenSSL::SSL.verify_wildcard("xn--qdk4b9b", "xn--qdk4b9b")) + end + + # Comments in this test is excerpted from http://tools.ietf.org/html/rfc6125#page-27 + def test_post_connection_check_wildcard_san + # case-insensitive ASCII comparison + # RFC 6125, section 6.4.1 + # + # "..matching of the reference identifier against the presented identifier + # is performed by comparing the set of domain name labels using a + # case-insensitive ASCII comparison, as clarified by [DNS-CASE] (e.g., + # "WWW.Example.Com" would be lower-cased to "www.example.com" for + # comparison purposes) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*.example.com'), 'www.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*.Example.COM'), 'www.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*.example.com'), 'WWW.Example.COM')) + # 1. The client SHOULD NOT attempt to match a presented identifier in + # which the wildcard character comprises a label other than the + # left-most label (e.g., do not match bar.*.example.net). + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:www.*.com'), 'www.example.com')) + # 2. If the wildcard character is the only character of the left-most + # label in the presented identifier, the client SHOULD NOT compare + # against anything but the left-most label of the reference + # identifier (e.g., *.example.com would match foo.example.com but + # not bar.foo.example.com or example.com). + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*.example.com'), 'foo.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*.example.com'), 'bar.foo.example.com')) + # 3. The client MAY match a presented identifier in which the wildcard + # character is not the only character of the label (e.g., + # baz*.example.net and *baz.example.net and b*z.example.net would + # be taken to match baz1.example.net and foobaz.example.net and + # buzz.example.net, respectively). ... + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:baz*.example.com'), 'baz1.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*baz.example.com'), 'foobaz.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:b*z.example.com'), 'buzz.example.com')) + # Section 6.4.3 of RFC6125 states that client should NOT match identifier + # where wildcard is other than left-most label. + # + # Also implicitly mentions the wildcard character only in singular form, + # and discourages matching against more than one wildcard. + # + # See RFC 6125, section 7.2, subitem 2. + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*b*.example.com'), 'abc.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*b*.example.com'), 'ab.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:*b*.example.com'), 'bc.example.com')) + # ... However, the client SHOULD NOT + # attempt to match a presented identifier where the wildcard + # character is embedded within an A-label or U-label [IDNA-DEFS] of + # an internationalized domain name [IDNA-PROTO]. + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:xn*.example.com'), 'xn1ca.example.com')) + # part of A-label + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:xn--*.example.com'), 'xn--1ca.example.com')) + # part of U-label + # dNSName in RFC5280 is an IA5String so U-label should NOT be allowed + # regardless of wildcard. + # + # See Section 7.2 of RFC 5280: + # IA5String is limited to the set of ASCII characters. + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_san('DNS:á*.example.com'), 'á1.example.com')) + end + + def test_post_connection_check_wildcard_cn + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*.example.com'), 'www.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*.Example.COM'), 'www.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*.example.com'), 'WWW.Example.COM')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('www.*.com'), 'www.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*.example.com'), 'foo.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*.example.com'), 'bar.foo.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('baz*.example.com'), 'baz1.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*baz.example.com'), 'foobaz.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('b*z.example.com'), 'buzz.example.com')) + # Section 6.4.3 of RFC6125 states that client should NOT match identifier + # where wildcard is other than left-most label. + # + # Also implicitly mentions the wildcard character only in singular form, + # and discourages matching against more than one wildcard. + # + # See RFC 6125, section 7.2, subitem 2. + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*b*.example.com'), 'abc.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*b*.example.com'), 'ab.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('*b*.example.com'), 'bc.example.com')) + assert_equal(true, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('xn*.example.com'), 'xn1ca.example.com')) + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('xn--*.example.com'), 'xn--1ca.example.com')) + # part of U-label + # Subject in RFC5280 states case-insensitive ASCII comparison. + # + # See Section 7.2 of RFC 5280: + # IA5String is limited to the set of ASCII characters. + assert_equal(false, OpenSSL::SSL.verify_certificate_identity( + create_cert_with_name('á*.example.com'), 'á1.example.com')) + end + + def create_cert_with_san(san) + ef = OpenSSL::X509::ExtensionFactory.new + cert = OpenSSL::X509::Certificate.new + cert.subject = OpenSSL::X509::Name.parse("/DC=some/DC=site/CN=Some Site") + ext = ef.create_ext('subjectAltName', san) + cert.add_extension(ext) + cert + end + + def create_cert_with_name(name) + cert = OpenSSL::X509::Certificate.new + cert.subject = OpenSSL::X509::Name.new([['DC', 'some'], ['DC', 'site'], ['CN', name]]) + cert + end + + # Create NULL byte SAN certificate def create_null_byte_SAN_certificate(critical = false) ef = OpenSSL::X509::ExtensionFactory.new debian/patches/100731_disable-tests.diff0000664000000000000000000000516612247132667015051 0ustar Author: Lucas Nussbaum Description: Disable two tests that are problematic on FreeBSD Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=590002 First test is discussed in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543805 and upstream bug http://redmine.ruby-lang.org/issues/show/2008 Second test is discussed in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542927 and upstream bug http://redmine.ruby-lang.org/issues/show/2025 It was fixed, but is now timing dependent. --- a/bootstraptest/test_io.rb +++ b/bootstraptest/test_io.rb @@ -8,28 +8,28 @@ assert_finish 5, %q{ w.write "a" }, '[ruby-dev:31866]' -assert_finish 10, %q{ - begin - require "io/nonblock" - require "timeout" - timeout(3) do - r, w = IO.pipe - w.nonblock? - w.nonblock = true - w.write_nonblock("a" * 100000) - w.nonblock = false - t1 = Thread.new { w.write("b" * 4096) } - t2 = Thread.new { w.write("c" * 4096) } - sleep 0.5 - r.sysread(4096).length - sleep 0.5 - r.sysread(4096).length - t1.join - t2.join - end - rescue LoadError, TimeoutError, NotImplementedError - end -}, '[ruby-dev:32566]' +#assert_finish 10, %q{ +# begin +# require "io/nonblock" +# require "timeout" +# timeout(3) do +# r, w = IO.pipe +# w.nonblock? +# w.nonblock = true +# w.write_nonblock("a" * 100000) +# w.nonblock = false +# t1 = Thread.new { w.write("b" * 4096) } +# t2 = Thread.new { w.write("c" * 4096) } +# sleep 0.5 +# r.sysread(4096).length +# sleep 0.5 +# r.sysread(4096).length +# t1.join +# t2.join +# end +# rescue LoadError, TimeoutError, NotImplementedError +# end +#}, '[ruby-dev:32566]' assert_finish 1, %q{ r, w = IO.pipe --- a/bootstraptest/test_thread.rb +++ b/bootstraptest/test_thread.rb @@ -216,21 +216,21 @@ assert_equal 'true', %{ end } -assert_equal 'ok', %{ - open("zzz.rb", "w") do |f| - f.puts <<-END - begin - Thread.new { fork { GC.start } }.join - pid, status = Process.wait2 - $result = status.success? ? :ok : :ng - rescue NotImplementedError - $result = :ok - end - END - end - require "./zzz.rb" - $result -} +#assert_equal 'ok', %{ +# open("zzz.rb", "w") do |f| +# f.puts <<-END +# begin +# Thread.new { fork { GC.start } }.join +# pid, status = Process.wait2 +# $result = status.success? ? :ok : :ng +# rescue NotImplementedError +# $result = :ok +# end +# END +# end +# require "./zzz.rb" +# $result +#} assert_finish 3, %{ th = Thread.new {sleep 2} debian/patches/CVE-2018-1000074.patch0000664000000000000000000000363713260474214013472 0ustar Backported of: From 254e3d0ee873c008c0b74e8b8abcbdab4caa0a6d Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Mon, 12 Feb 2018 23:41:28 -0500 Subject: [PATCH] Fix possible Unsafe Object Deserialization Vulnerability in gem owner diff --git a/lib/rubygems/commands/owner_command.rb b/lib/rubygems/commands/owner_command.rb index 6ebf9aa..c6905eb 100644 --- a/lib/rubygems/commands/owner_command.rb +++ b/lib/rubygems/commands/owner_command.rb @@ -44,7 +44,7 @@ class Gem::Commands::OwnerCommand < Gem::Command end with_response response do |resp| - owners = YAML.load resp.body + owners = Gem::SafeYAML.load resp.body say "Owners for gem: #{name}" owners.each do |owner| diff --git a/test/rubygems/test_gem_commands_owner_command.rb b/test/rubygems/test_gem_commands_owner_command.rb index 65fe09e..b177260 100644 --- a/test/rubygems/test_gem_commands_owner_command.rb +++ b/test/rubygems/test_gem_commands_owner_command.rb @@ -1,6 +1,9 @@ require 'rubygems/test_case' require 'rubygems/commands/owner_command' +class Foo +end + class TestGemCommandsOwnerCommand < Gem::TestCase def setup @@ -34,6 +37,30 @@ EOF assert_match %r{- user2@example.com}, @ui.output end + def test_show_owners_dont_load_objects + skip "testing a psych-only API" unless defined?(::Psych::DisallowedClass) + + response = < Fri, 29 Mar 2019 14:46:36 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.13) trusty-security; urgency=medium * SECURITY UPDATE: Name equality check - debian/patches/CVE-2018-16395.patch: fix in ext/openssl/ossl_x509name.c. - CVE-2018-16395 * SECURITY UPDATE: Tainted flags not propagted - debian/patches/CVE-2018-16396.patch: fix in pack.c, test/ruby/test_pack.rb. - CVE-2018-16396 * Incresing maximum test failures to 39 since some tests that failed are related to timezone and tzdata changes. - debian/run-test-suites.bash. -- Leonidas S. Barbosa Thu, 01 Nov 2018 08:35:26 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.12) trusty-security; urgency=medium * SECURITY UPDATE: Response splitting attack - debian/patches/CVE-2017-17742*.patch: fix in webrick/httpresponse.rb, test/webrick/test_httpresponse.rb. - CVE-2017-17742 * SECURITY UPDATE: Denial of service - debian/patches/CVE-2018-8777*.patch: fix in lib/webrick/httpresponse.rb, lib/webrick/httpservlet/filehandler.rb, test/webrick/test_filehandler.rb, test/webrick/test_httpresponse.rb. - CVE-2018-8777 -- Leonidas S. Barbosa Thu, 07 Jun 2018 09:15:34 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.11) trusty-security; urgency=medium * SECURITY UPDATE: Directory traversal vulnerability - debian/patches/CVE-2018-6914.patch: fix in lib/tmpdir.rb, test/test_tempfile.rb. - CVE-2018-6914 * SECURITY UPDATE: Buffer under-read - debian/patches/CVE-2018-8778.patch: fix in pack.c, test/ruby/test_pack.rb. - CVE-2018-8778 * SECURITY UPDATE: Unintended socket - debian/patches/CVE-2018-8779.patch: fix in ext/socket/unixsocket.c, test/socket/test_unix.rb. - CVE-2018-8779 * SECURITY UPDATE: Directory traversal - debian/patches/CVE-2018-8780.patch: fix in dir.c, test/ruby/test_dir.rb. - CVE-2018-8780 -- Leonidas S. Barbosa Mon, 16 Apr 2018 10:52:29 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.10) trusty-security; urgency=medium * SECURITY REGRESSION: The fix for CVE-2018-1000074 was incomplete and will be addressed in a future update. -- Leonidas S. Barbosa Fri, 13 Apr 2018 09:53:54 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.8) trusty-security; urgency=medium * SECURITY UPDATE: Deserialization untrusted data - debian/patches/CVE-2018-1000074*.patch fix in lib/rubygems/commands/owner_command.rb, test/rubygems/test_gem_commands_owner_command.rb. - CVE-2018-1000074 * SECURITY UPDATE: Infinite loop - debian/patches/CVE-2018-1000075.patch: fix in lib/rubygems/package/tar_header.rb, test/rubygems/test_gem_package_tar_header.rb. - CVE-2018-1000075 * SECURITY UPDATE: Validation vulnerability - debian/patches/CVE-2018-1000077.patch: fix in lib/rubygems/specification.rb, test/rubygems/test_gem_specification.rb. - CVE-2018-1000077 * SECURITY UPDATE: Cross site scripting - debian/patches/CVE-2018-1000078.patch: fix in lib/rubygems/server.rb. - CVE-2018-1000078 -- Leonidas S. Barbosa Mon, 02 Apr 2018 16:24:32 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.7) trusty-security; urgency=medium * SECURITY UPDATE: possible command injection attacks through kernel#open - debian/patches/CVE-2017-17790.patch: fix uses of Kernel#open in lib/resolv.rb. - CVE-2017-17790 -- Leonidas S. Barbosa Mon, 08 Jan 2018 17:41:26 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.6) trusty-security; urgency=medium * SECURITY UPDATE: command injection through Net::FTP - debian/patches/CVE-2017-17405.patch: fix command injection in lib/net/ftp.rb. - CVE-2017-17405 -- Leonidas S. Barbosa Mon, 18 Dec 2017 14:36:12 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.5) trusty-security; urgency=medium * SECURITY UPDATE: Buffer underrun vulneratiblity - debian/patches/CVE-2017-0898-10748-14033-14064.patch patch extracted from debian Wheezy. - CVE-2017-0898 * SECURITY UPDATE: ANSI escape sequence vulnerability - debian/patches/CVE-2017-0899-0900-0901.patch patch extracted from debian Wheezy. - CVE-2017-0899 * SECURITY UPDATE: DoS vulnerability in query command - debian/patches/CVE-2017-0899-0900-0901-0902.patch patch extracted from debian Wheezy. - CVE-2017-0900 * SECURITY UPDATE: Malicious gem overwrite arbitrary files - debian/patches/CVE-2017-0899-0900-0901.patch patch extracted from debian Wheezy. - CVE-2017-0901 * SECURITY UPDATE: Escape sequence injection vulnerability - debian/patches/CVE-2017-0898-10748-14033-14064.patch patch extracted from debian Wheezy. - CVE-2017-10748 * SECURITY UPDATE: Buffer underrun - debian/patches/CVE-2017-0898-10748-14033-14064.patch patch extracted from debian Wheezy. - CVE-2017-14033 * SECURITY UPDATE: Heap exposure - debian/patches/CVE-2017-0898-10748-14033-14064.patch patch extracted from debian Wheezy. - CVE-2017-14064 -- Leonidas S. Barbosa Tue, 03 Oct 2017 16:25:24 -0300 ruby1.9.1 (1.9.3.484-2ubuntu1.3) trusty-security; urgency=medium * SECURITY UPDATE: DoS and possible code execution in DL::dlopen - debian/patches/CVE-2009-5147.patch: check tainted string arguments in ext/dl/handle.c. - CVE-2009-5147 * SECURITY UPDATE: incorrect hostname matching - debian/patches/CVE-2015-1855.patch: implement stricter hostname validation per RFC 6125 in ext/openssl/lib/openssl/ssl-internal.rb, added tests to test/openssl/test_ssl.rb. - CVE-2015-1855 * SECURITY UPDATE: SMTP command injection - debian/patches/CVE-2015-9096.patch: don't allow bare CR or LF in lib/net/smtp.rb, added test to test/net/smtp/test_smtp.rb. - CVE-2015-9096 * SECURITY UPDATE: type confusion in tcltkip - debian/patches/CVE-2016-2337.patch: check argument in ext/tk/tcltklib.c. - CVE-2016-2337 * SECURITY UPDATE: heap overflow in Fiddle::Function.new - debian/patches/CVE-2016-2339.patch: check arguments in ext/fiddle/function.c. - CVE-2016-2339 * SECURITY UPDATE: use of same initialization vector (IV) - debian/patches/CVE-2016-7798.patch: don't set dummy key in ext/openssl/ossl_cipher.c, added test to test/openssl/test_cipher.rb. - CVE-2016-7798 -- Marc Deslauriers Tue, 20 Jun 2017 08:03:20 -0400 ruby1.9.1 (1.9.3.484-2ubuntu1.2) trusty-security; urgency=medium * SECURITY UPDATE: denial of service via XML expansion - debian/patches/CVE-2014-8090.patch: add REXML::Document#document to lib/rexml/document.rb, add warning to lib/rexml/entity.rb, added tests to test/rexml/test_document.rb. - CVE-2014-8090 -- Marc Deslauriers Wed, 19 Nov 2014 15:23:31 -0500 ruby1.9.1 (1.9.3.484-2ubuntu1.1) trusty-security; urgency=medium * SECURITY UPDATE: denial of service via buffer overrun in encodes function - debian/patches/CVE-2014-4975.patch: properly calculate buffer size in pack.c. - CVE-2014-4975 * SECURITY UPDATE: denial of service via XML expansion - debian/patches/CVE-2014-8080.patch: limit expansions in lib/rexml/entity.rb, added tests to test/rexml/test_document.rb, test/rexml/test_entity.rb. - CVE-2014-8080 -- Marc Deslauriers Mon, 03 Nov 2014 09:25:06 -0500 ruby1.9.1 (1.9.3.484-2ubuntu1) trusty; urgency=medium * Merge from Debian unstable. Remaining changes: - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. - debian/patches/20131218-stack-size.patch: Increase thread stack size on 64-bit platforms to prevent testsuite failure on ppc64el. - Build-depend on Tcl/Tk 8.5, ruby is not yet ready for Tcl/Tk 8.6. -- Adam Conrad Fri, 14 Feb 2014 19:48:22 -0700 ruby1.9.1 (1.9.3.484-2) unstable; urgency=medium * new strategy for Ruby version transitions: - ruby1.9.1 depends on ruby - libruby1.9.1 depends on ruby1.9.1 * Drop alternatives entries. -- Antonio Terceiro Sat, 01 Feb 2014 20:40:01 -0300 ruby1.9.1 (1.9.3.484-1ubuntu2) trusty; urgency=medium * Build-depend on tcl8.5-dev and tk8.5-dev, ruby is not yet ready for Tcl/Tk 8.6. -- Matthias Klose Sat, 04 Jan 2014 18:00:42 +0100 ruby1.9.1 (1.9.3.484-1ubuntu1) trusty; urgency=low * Merge from Debian unstable. Remaining changes: - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. * Drop debian/patches/CVE-2013-4164.patch; applied upstream. * debian/patches/20131218-stack-size.patch: Increase thread stack size on 64-bit platforms to prevent testsuite failure on ppc64el. -- Adam Conrad Wed, 18 Dec 2013 03:16:39 -0700 ruby1.9.1 (1.9.3.484-1) unstable; urgency=low * New upstream release + Includes fix for Heap Overflow in Floating Point Parsing (CVE-2013-4164) Closes: #730178 + drop debian/patches/2013-09-08-restore-rb_f_lambda-declaration.patch, already applied upstream. -- Antonio Terceiro Mon, 25 Nov 2013 22:31:23 -0300 ruby1.9.1 (1.9.3.448-1ubuntu2) trusty; urgency=low * SECURITY UPDATE: denial of service and possible code execution via heap overflow in floating point parsing. - debian/patches/CVE-2013-4164.patch: check lengths in util.c, added test to test/ruby/test_float.rb. - CVE-2013-4164 -- Marc Deslauriers Mon, 25 Nov 2013 15:12:24 -0500 ruby1.9.1 (1.9.3.448-1ubuntu1) trusty; urgency=low * Merge from Debian. Remaining changes: - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. -- Marc Deslauriers Mon, 25 Nov 2013 09:59:41 -0500 ruby1.9.1 (1.9.3.448-1) unstable; urgency=low * New upstream release + Includes fix for potential thread deadlock after fork() Closes: #698208 + Includes fix for test error originally introduced by patch for CVE-2012-4522 Closes: #701142 + Includes fix for CVE-2012-4466 and CVE-2012-4464 Closes: #701144 + Includes fix for incorrect setting of FD_CLOEXEC with F_SETFL instead of F_SETFD Closes: #696281 + debian/patches/2013-09-08-restore-rb_f_lambda-declaration.patch: backport upstream patch to reintroduce the declaration of rb_f_lamdba for backwards compatibility. + Dropped patches already applied upstream; refreshed all others. * Review of remaining patches in debian/patches/series: + 909_update_lib_README.diff: obsolete and ultimately wrong. Removed + 903_skip_base_ruby_check.diff: can't see a reason why this would be needed. Removed. * move logic to skip DRB tests inside debian/run-test-suites.bash * Acknowledge security-related NMU's by Salvatore Bonaccorso. + Both CVE-2013-1821.patch and CVE-2013-4073.patch already applied in this upstream version, not included anymore * debian/rules: acknowledge reality, put myself as maintainer. * debian/rules: dropped --with-baseruby=/usr/bin/ruby1.8. This way the build will just use `ruby` for bootstrapping. Also, build-depend on ruby | ruby-interpreter instead of ruby1.8; this way ruby1.9.1 can be bootstrapped with any Ruby interpreter, and we can leave ruby1.8 Rest In Peace. * debian/rules: applied patch from Timothy Pearson to install pkg-config file. Closes: #688002 * debian/libruby1.9.1.symbols: removed debian revision from version numbers for symbols introduced in 1.9.3.194 * debian/control: bump Standards-Version to 3.9.4. No changes needed. * debian/control: remove -1 from build dependency on coreutils -- Antonio Terceiro Sun, 08 Sep 2013 22:57:14 -0300 ruby1.9.1 (1.9.3.194-8.2) unstable; urgency=high * Non-maintainer upload. * Add CVE-2013-4073.patch patch. CVE-2013-4073: Fix hostname check bypassing vulnerability in SSL client. (Closes: #714543) -- Salvatore Bonaccorso Sun, 07 Jul 2013 10:37:03 +0200 ruby1.9.1 (1.9.3.194-8.1ubuntu2) saucy; urgency=low * SECURITY UPDATE: incorrect ssl hostname verification - debian/patches/CVE-2013-4073.patch: fix hostname check and regression in ext/openssl/lib/openssl/ssl-internal.rb, added test to test/openssl/test_ssl.rb. - CVE-2013-4073 -- Marc Deslauriers Mon, 08 Jul 2013 13:00:47 -0400 ruby1.9.1 (1.9.3.194-8.1ubuntu1) raring; urgency=low * Merge from Debian testing. Remaining changes: - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. - debian/patches/CVE-2012-4522.patch: Adjust patch to fix build test error. Use the version of the fix from upstream's 1.9.3 tree to fix the NoMethodError for assert_file_not, which doesn't exist in 1.9.3. Adjust the Origin patch tag accordingly. -- Marc Deslauriers Mon, 25 Mar 2013 10:33:34 -0400 ruby1.9.1 (1.9.3.194-8.1) unstable; urgency=high * Non-maintainer upload. * Add CVE-2013-1821.patch patch. CVE-2013-1821: Fix entity expansion DoS vulnerability in REXML. When reading text nodes from an XML document, the REXML parser could be coerced into allocating extremely large string objects which could consume all available memory on the system. (Closes: #702525) -- Salvatore Bonaccorso Fri, 08 Mar 2013 21:48:20 +0100 ruby1.9.1 (1.9.3.194-7ubuntu1) raring; urgency=low * Merge from Debian testing (LP: #1131493). Remaining changes: - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. * Changes dropped: - debian/patches/20121016-cve_2012_4522.patch: Debian is carrying a patch for this issue. - debian/patches/20121011-cve_2012_4464-cve_2012_4466.patch: Debian is carrying a patch for this issue, but the patch is incorrectly named 20120927-cve_2011_1005.patch. I'll work with Debian to change the patch name, but there's no need in carrying a delta because of this. To be clear, the Ubuntu ruby1.9.1 package is patched for CVE-2012-4464 and CVE-2012-4466, despite the incorrect patch name. * debian/patches/CVE-2012-4522.patch: Adjust patch to fix build test error. Use the version of the fix from upstream's 1.9.3 tree to fix the NoMethodError for assert_file_not, which doesn't exist in 1.9.3. Adjust the Origin patch tag accordingly. -- Tyler Hicks Thu, 21 Feb 2013 17:11:23 -0800 ruby1.9.1 (1.9.3.194-5) unstable; urgency=high * Disable running the test suite during the build on sparc again. Keeping urgency=high because the previous release, which contains a security bug fix, did not reach testing yet because of a segfault when running tests in the sparc buildd. -- Antonio Terceiro Sun, 25 Nov 2012 19:12:28 -0300 ruby1.9.1 (1.9.3.194-4) unstable; urgency=high [ James Healy ] * debian/patches/CVE-2012-5371.patch: avoid DOS vulnerability in hash implementation, this fixes CVE-2012-5371. (Closes: #693024). -- Antonio Terceiro Thu, 22 Nov 2012 10:30:37 -0300 ruby1.9.1 (1.9.3.194-3) unstable; urgency=high * debian/patches/CVE-2012-4522.patch: avoid vulnerability with strings containing NUL bytes passed to file creation methods. This fixes CVE-2012-4522 (Closes: #690670). -- Antonio Terceiro Tue, 16 Oct 2012 10:27:20 -0300 ruby1.9.1 (1.9.3.194-2) unstable; urgency=low * debian/patches/20120927-cve_2011_1005.patch: patch sent by upstream; fixes CVE-2011-1005 which was thought of as not affecting the Ruby 1.9.x series (Closes: #689075). Thanks to Tyler Hicks for reporting the issue. -- Antonio Terceiro Sat, 06 Oct 2012 16:29:42 -0300 ruby1.9.1 (1.9.3.194-1ubuntu1.2) quantal-security; urgency=low * SECURITY UPDATE: Safe level bypass - debian/patches/20121011-cve_2012_4464-cve_2012_4466.patch: Remove incorrect string taint in exception handling methods. Based on upstream patch. - CVE-2012-4464 - CVE-2012-4466 * SECURITY UPDATE: Missing input sanitization of file paths - debian/patches/20121016-cve_2012_4522.patch: NUL characters are not valid filename characters, so ensure that Ruby strings used for file paths do not contain NUL characters. Based on upstream patch. - CVE-2012-4522 * debian/patches/20120927-cve_2011_1005.patch: Drop since ruby1.9.x is technically not affected by CVE-2011-1005. CVE-2012-4464 is the id assigned to the vulnerability in the ruby1.9.x branch. -- Tyler Hicks Tue, 16 Oct 2012 09:38:57 -0700 ruby1.9.1 (1.9.3.194-1ubuntu1) quantal; urgency=low * SECURITY UPDATE: Safe level bypass - debian/patches/20120927-cve_2011_1005.patch: Remove incorrect string taint in exception handling methods. Based on upstream patch. - CVE-2011-1005 * Make the RubyGems fetcher use distro-provided ca-certificates (LP: #1057926) - debian/control: Add ca-certificates to libruby1.9.1 depends so that rubygems can perform certificate verification - debian/rules: Don't install SSL certificates from upstream sources - debian/patches/20120927-rubygems_disable_upstream_certs.patch: Use /etc/ssl/certs/ca-certificates.crt for the trusted CA certificates. -- Tyler Hicks Thu, 27 Sep 2012 20:37:54 -0700 ruby1.9.1 (1.9.3.194-1) unstable; urgency=low [ Lucas Nussbaum ] * Add hurd-path-max.diff. Fixes FTBFS on Hurd. (Closes: #648055) [ Daigo Moriwaki ] * Removed debian/patches/debian/patches/sparc-continuations.diff, which the upstream has applied. * debian/rules: - Bumped up tcltk_ver to 8.5. - Used chrpath for tcltklib.so to fix a lintian error, binary-or-shlib-defines-rpath. * debian/control: - Suggests ruby-switch. (Closes: #654312) - Build-Depends: chrpath. * debian/libruby1.9.1.symbols: Added a new symbol for rb_str_modify_expand@Base. * debian/run-test-suites.bash: - Corrected options for test-all. - Enabled timeout to allow hang tests to be aborted. [ James Healy ] * New upstream release: 1.9.3p194 (Closes: #669582) + This release includes a fix for CVE-2011-0188 (Closes: #628451) + This release also does not segfault when running the test suite under amd64 (Closes: #674347) * Enable hardened build flags (Closes: #667964) * debian/control: - depend on specific version on coreutils - update policy version (no changes) [ Antonio Terceiro ] * debian/ruby1.9.1.postinst: + bump alternatives priority for `ruby` to 51 so that Ruby 1.9 has a higher priority than Ruby 1.8 (50). + bump alternatives priority for `gem` to 181 so that the Rubygems provided by Ruby 1.9 has priority over the one provided by the rubygems package. * debian/control: added myself to Uploaders: * debian/libruby1.9.1.symbols: update with new symbols added in 1.9.3p194 upstream release. * debian/manpages/*: fix references to command names with s/1.9/1.9.1/ * debian/rules: skip running DRB tests, since they seem to make the build hang. This should close #647296, but let's way and see. Also, with this do not need to timeout the test suite anymore. -- Antonio Terceiro Sat, 02 Jun 2012 07:42:28 -0300 ruby1.9.1 (1.9.3.0-2) unstable; urgency=low * gcc's #635126 requiring -fno-tree-sra has been fixed. Disable workaround in that package. * add sparc-continuations.diff: fixes segfault during test suite on sparc. Closes: #593138, #545345. Many thanks to Jurij Smakov. -- Lucas Nussbaum Mon, 19 Dec 2011 21:33:37 +0100 ruby1.9.1 (1.9.3.0-1) unstable; urgency=low * New upstream release: 1.9.3p0. * Disable test suites on ia64 sparc kfreebsd-i386 kfreebsd-amd64. Those architectures are known to be broken at the moment. Details: http://lists.debian.org/debian-release/2011/10/msg00279.html -- Lucas Nussbaum Mon, 31 Oct 2011 08:44:23 +0100 ruby1.9.1 (1.9.3~rc1-3) experimental; urgency=low * Update symbols file to fix FTBFS on i386, mips, mipsel, powerpc, s390. Closes: #644705. -- Lucas Nussbaum Sun, 09 Oct 2011 11:09:13 +0200 ruby1.9.1 (1.9.3~rc1-2) experimental; urgency=low * Add symbols file. Some symbols were removed between 1.9.2.0 and 1.9.3~rc1, but this does not constitute an ABI change as those symbols were not supposed to be used by third-party extensions (not in header files, etc.) See http://redmine.ruby-lang.org/issues/4666 for details. Closes: #636966. * Upload to experimental to test-build this. -- Lucas Nussbaum Sat, 08 Oct 2011 10:30:33 +0200 ruby1.9.1 (1.9.3~rc1-1) unstable; urgency=low * New upstream release: 1.9.3 RC1. + Includes load.c fixes. Closes: #639959. * Upload to unstable. -- Lucas Nussbaum Sat, 24 Sep 2011 19:16:17 +0200 ruby1.9.1 (1.9.3~preview1+svn33236-1) experimental; urgency=low * New upstream snapshot. * add README.porters: instructions on how to run specific tests. * 110829-freebsd_map_stack.patch: merged usptream, dropped. * 110829-hurd_dirent_usage.patch: refresh. -- Lucas Nussbaum Sat, 10 Sep 2011 10:07:12 +0200 ruby1.9.1 (1.9.3~preview1+svn33077-3) experimental; urgency=low * Add debian/run-test-suites.bash: test suites wrapper that checks the number of failures and exit if there are too many. * debian/rules: optimizations were dropped on ia64. Revert. * 20100829-rubygems_default_dir.diff, 20100829-rubygems_disable_update_system.diff: disable tests that are broken by those changes. -- Lucas Nussbaum Tue, 30 Aug 2011 07:44:33 +0200 ruby1.9.1 (1.9.3~preview1+svn33077-2) experimental; urgency=low * Also add --no-tree-sra on sparc. * Add 110829-freebsd_map_stack.patch. Work around FreeBSD bug. * Add 110829-freebsd_assert_normal_exit.patch: workaround FreeBSD bug in testsuite runner. * Add 110829-hurd_dirent_usage.patch: Fix dirent issue on hurd. Closes: #639664 * Modified 20100829-rubygems_default_dir.diff: avoid warning. -- Lucas Nussbaum Mon, 29 Aug 2011 22:41:14 +0200 ruby1.9.1 (1.9.3~preview1+svn33077-1) experimental; urgency=low * New upstream snapshot (SVN rev 33029, ruby_1_9_3 branch). + Should fix FTBFS on m68k. Closes: #611691. * Cleanup disabled patches in debian/patches: + Drop patch 110801-ftbfs-ia64-missing-semicolon.diff: fixed upstream. + remove patch 110411_disable_osslv2.patch (was already disabled) + Remove 201_gem_prelude.diff and 202_gem_default_dir.diff. Merged into 20100829-rubygems_default_dir.diff + Remove 203_adjust_base_of_search_path.diff. Not needed anymore. + Remove 900_ri_pager.diff. Applied upstream in lib/rdoc/ri/driver.rb + Remove 902_define_YAML_in_yaml_stringio.rb.diff. This code has changed, and the reason for this patch has been lost. + Remove 904_linux_target_os.diff. This patch was only required for the LPIA Ubuntu architecture, which no longer exists. + Remove 931_libruby_suffix.diff. No longer needed. + Remove 940_hppa_disable_test_propag_signal.diff. hppa is dead. + Remove 940_test_file_exhaustive_fails_as_root.diff. Applied upstream. + Remove 940_test_priority_fails.diff. Fixed upstream. + re-enable and refresh 090729_fix_Makefile_deps.diff + re-enable and refresh 090803_exclude_rdoc.diff + Remove 091207_test_dl_free_func.diff. Merged upstream. + Remove 100327_r24850_bootstraptest_test_thread.diff. Applied upstream. + Remove 100503_r27337_rb_string_value_cstr.diff. Applied upstream. + Remove 100503_r27356_queue_race.diff.diff. Applied upstream. + Remove 100518_load_libc_libm.diff, 100518_r23483_suppress_pathname_warning.diff and 100518_r26515_free_rb_classext.diff. Were upstream backports. + Remove 110801-ftbfs-ia64-missing-semicolon.diff. fixed upstream. * Add 110825-run-tests-verbose.patch: run tests in verbose mode * Add openssl to build-depends. Needed for test_constants(OpenSSL::TestConfig). * Improve rubygems_default_dir.diff to avoid warnings. * Add 110825-tests_broken_as_root.patch: skip some tests when root. * Introduce ruby1.9.3 package to improve the confusing situation. * Fix 1.9.2 -> 1.9.3 in descriptions. -- Lucas Nussbaum Fri, 26 Aug 2011 11:37:58 +0200 ruby1.9.1 (1.9.3~preview1-2) experimental; urgency=low * Add -fno-tree-sra on armel. Same workaround as for ruby1.8 (see #634260) -- Lucas Nussbaum Mon, 01 Aug 2011 20:58:07 +0200 ruby1.9.1 (1.9.3~preview1-1) experimental; urgency=low * New upstream version: 1.9.3 preview 1. * debian/patches/20100829-rubygems_default_dir.diff: refreshed patch. * debian/patches/20100829-rubygems_disable_update_system.diff: refreshed patch. * Add 110801-ftbfs-ia64-missing-semicolon.diff. Fixes FTBFS on ia64. -- Lucas Nussbaum Mon, 01 Aug 2011 16:59:35 +0200 ruby1.9.1 (1.9.2.180+svn32566-1) experimental; urgency=low * New SVN snapshot based on revision 32566 from the ruby_1_9_3 branch. * Add patch 110720_tcltk_disable_rpath.diff: disable rpath in tcltk. * Add patch 110720_tcltk_disable_rpath.diff: disable rpath in tcltk. -- Lucas Nussbaum Wed, 20 Jul 2011 11:25:23 +0200 ruby1.9.1 (1.9.2.180+svn32099-1) experimental; urgency=low * New SVN snapshot based on revision 32099 from trunk. * 20100829-rubygems_default_dir.diff: refresh * 20100829-rubygems_disable_update_system.diff: refresh * 909_update_lib_README.diff: refresh * 110411_disable_osslv2.patch: drop, cleaner solution implemented upstream * Update Lucas' email address. * Build-depend on tcl-dev and tk-dev instead of {tcl,tk}8.4-dev. * Relicensed under Ruby || BSDL. + Update debian/copyright. + Build-depend on libreadline6-dev. -- Lucas Nussbaum Wed, 15 Jun 2011 14:01:51 +0200 ruby1.9.1 (1.9.2.180-5) unstable; urgency=low * Build-depend on libreadline-gplv2-dev instead of libreadline5-dev. Ruby is dual-licensed under GPLv2 (only) || Ruby license, so we cannot use libreadline6-dev. -- Lucas Nussbaum Sun, 15 May 2011 10:46:43 +0200 ruby1.9.1 (1.9.2.180-4) unstable; urgency=low [ Daigo Moriwaki ] * debian/control: Corrected wording. (Closes: #624574) [ Lucas Nussbaum ] * Change 01_default_gem_path.diff: + executables are now installed to /usr/local/bin. + but the other files created by rubygems stay in /var/lib/gems/. Several commenters in #448639 and #403407 argued in favor of the switch to /usr/local/bin. Those two bugs can therefore be closed. However, the issue is not completely solved, as rubygems still installs files in /var/lib/gems. Nobody in the bug logs explained why that was an issue. If you care about it, please open a new bug. Fixes the rubygems bugs: #448639, #403407 * Update Standards-Version to 3.9.2. No changes needed. -- Lucas Nussbaum Tue, 03 May 2011 16:26:04 +0200 ruby1.9.1 (1.9.2.180-3) unstable; urgency=low * Remove --with-lookup-order-hack=INET. That breaks IPv6-only systems. See #619209 * Drop ruby1.9.1-elisp. The Ruby emacs mode is now provided in emacs 23. * Add patch 110411_disable_osslv2.patch Disables SSLv2. Closes: #620998 * Move the ri1.9.1 binary and manpage to the ruby1.9.1 package. ri1.9.1 still exists, but only contains the documentation. This is needed to fix #621058. * Make libruby1.9.1 Conflict, Replace irb1.9.1, rdoc1.9.1. fixes #608582 -- Lucas Nussbaum Tue, 12 Apr 2011 12:03:14 +0200 ruby1.9.1 (1.9.2.180-2) unstable; urgency=low * Switch to git. Update Vcs-*. * Upload to unstable. -- Lucas Nussbaum Fri, 25 Mar 2011 10:11:47 +0100 ruby1.9.1 (1.9.2.180-2~experimental.1) experimental; urgency=low * Remove the patchsys-quilt CDBS rule. It is not needed since we are using 3.0 (quilt). * Add Provides for ruby-interpreter and ruby1.9.2-full. * Switch to alternatives to manage Ruby versions. * Decrease gem alternatives priority to 10 to be consistent with the interpreter priority. * Upload to experimental. Changes are very intrusive and need extensive testing. -- Lucas Nussbaum Sat, 05 Mar 2011 20:57:31 +0100 ruby1.9.1 (1.9.2.180-1) unstable; urgency=low * New upstream release. - (CVE-2011-1004; Closes: #615519) - No longer found in 1.9.2 (Closes: #509500) * debian/rules: correctly skip making rdoc for DEB_BUILD_OPTIONS="nordoc". * debian/control: Build-Depends libncursesw5-dev as well. (Closes: #578169) -- Daigo Moriwaki Sun, 27 Feb 2011 16:28:32 +0900 ruby1.9.1 (1.9.2.0-2) unstable; urgency=low * Clarify versioning in package description to reduce 1.9.1 <-> 1.9.2 confusion. Closes: #601526. * Remove README.Debian. It only contained outdated information. * Build with -mieee on SH4. Closes: #591785. * Update debian/NEWS to mention LOAD_PATH change. Closes: #593098. * ruby1.9.1: add Suggests on ruby1.9.1-dev as it is need to build many gems, and that's a FAQ. * ruby1.9.1-dev: mention building gems in package description. -- Lucas Nussbaum Mon, 01 Nov 2010 09:03:33 +0100 ruby1.9.1 (1.9.2.0-1) unstable; urgency=high [ Lucas Nussbaum ] * New upstream release. The 1.9.2 branch was in deep freeze at the time of the last snapshot, and all the changes between that snapshot and the present final tarball are bugfixes, as shown by svn log -r28788:HEAD http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_2 Also, it sounds much easier to support a released version on the long term, rather than an SVN snapshot. Also fixes CVE-2010-0541. Closes: #593298. Could also improve kFreeBSD support as some changes are FreeBSD-related. * Add build-dependency on libyaml-dev to build psych, which is a new, faster YAML library provided in Ruby 1.9.2. [ Daigo Moriwaki ] * debian/watch: support new URL for Ruby 1.9.2. * debian/rules: DEB_BUILD_OPTIONS="nordoc" provides no-doc build for build testing. * Merged rubygems1.9.1: this package used to be provided by the libgems-ruby source package, but the version of rubygems provided by libgems-ruby is incompatible with Ruby 1.9.2. Also, Rubygems is shipped as part of Ruby. Closes: #588125 [ Lucas Nussbaum ] * Provide a way to override Debian's disabling of gem update --system by setting an environment variable. This is the same change as the one done for libgems-ruby. -- Lucas Nussbaum Sat, 11 Sep 2010 08:38:44 +0200 ruby1.9.1 (1.9.2~svn28788-1) unstable; urgency=low * New release based on upstream snapshot from the 1.9.2 branch, after 1.9.2 RC2. That branch is (supposed to be) binary-compatible with the 1.9.1 branch. + Builds fine on i386. Closes: #580852. * Upgrade to Standards-Version: 3.9.1. No changes needed. * Updated generated incs. * Patches that still need work: + Unclear status, need more investigation: 090729_fix_Makefile_deps.dpatch 090803_exclude_rdoc.dpatch 203_adjust_base_of_search_path.dpatch 902_define_YAML_in_yaml_stringio.rb.dpatch 919_common.mk_tweaks.dpatch 931_libruby_suffix.dpatch 940_test_thread_mutex_sync_shorter.dpatch + Maybe not needed anymore, keeping but not applying. 102_skip_test_copy_stream.dpatch (test doesn't block anymore?) 104_skip_btest_io.dpatch (test doesn't block anymore?) 201_gem_prelude.dpatch (we don't use that rubygems anyway?) 202_gem_default_dir.dpatch (we don't use that rubygems anyway?) 940_test_file_exhaustive_fails_as_root.dpatch 940_test_priority_fails.dpatch 100518_load_libc_libm.dpatch * Add disable-tests.diff: disable some tests that cause failures on FreeBSD. Closes: #590002, #543805, #542927. * However, many new failures on FreeBSD. Since that version is still an improvement, add the check that makes test suite failures non-fatal on FreeBSD again. That still needs to be investigated. * Re-add 903_skip_base_ruby_check.dpatch * Add build-dependency on ruby1.8 and drop all pre-generated files. -- Lucas Nussbaum Sat, 31 Jul 2010 17:08:39 -0400 ruby1.9.1 (1.9.1.429-1) unstable; urgency=low * New upstream release * Switch to dpkg-source 3.0 (quilt) format. -- Daigo Moriwaki Mon, 19 Jul 2010 22:02:35 +0900 ruby1.9.1 (1.9.1.378-4) unstable; urgency=low * Added debian/patches/100518_r26515_free_rb_classext.dpatch LP: #514322, LP: #529011 * Added 100518_load_libc_libm.dpatch Fixes loading of libc and libm. Closes: #560293 * Added 100518_r23483_suppress_pathname_warning.dpatch Remove warning in pathname.rb. Closes: #566612 * Added 100518_r27464_threading_non-nptl.dpatch Fixes threading issues on kfreebsd. Closes: #542927 * Make test suite failures on FreeBSD fatal. * Run the test suite on hppa too. -- Lucas Nussbaum Tue, 18 May 2010 22:24:49 +0200 ruby1.9.1 (1.9.1.378-3) unstable; urgency=low * Added patches: - debian/patches/100503_r27337_rb_string_value_cstr.dpatch Back port from the upstream r27337. - debian/patches/100503_r27356_queue_race.diff.dpatch Back port from the upstream r27356. -- Daigo Moriwaki Tue, 04 May 2010 01:46:05 +0900 ruby1.9.1 (1.9.1.378-2) unstable; urgency=low [ Lucas Nussbaum ] * Merge lib{dbm,gdbm,readline,openssl}-ruby1.9.1 into libruby1.9.1. * Merge irb1.9.1 and rdoc1.9.1 into ruby1.9.1. * Update lintian override. * Update emacs dependency. * Fix ri1.9.1 dep: make it binNMUable again. * Update debian/copyright. * Upgrade to Standards-Version: 3.8.4. No changes needed. * Add lintian override for package-name-doesnt-match-sonames. * Remove duplicate section/priority stanzas. * Fix a few minor problems in manpages. [ Daigo Moriwaki ] * Added a patch: - debian/patches/100327_r24850_bootstraptest_test_thread.dpatch Back port from the upstream r24850, fixing a test failure. -- Daigo Moriwaki Sat, 27 Mar 2010 11:00:48 +0900 ruby1.9.1 (1.9.1.378-1) unstable; urgency=medium * New upstream release * The upstream has fixed a vulnerability in WEBrick, a part of Ruby's standard library. WEBrick lets attackers to inject malicious escape sequences to its logs, making it possible for dangerous control characters to be executed on a victim's terminal emulator. (Closes: #564646) -- Daigo Moriwaki Mon, 11 Jan 2010 09:46:28 +0900 ruby1.9.1 (1.9.1.376-1) unstable; urgency=low * New upstream release -- Daigo Moriwaki Mon, 07 Dec 2009 22:34:25 +0900 ruby1.9.1 (1.9.1.375-1) unstable; urgency=low * Interim upstream 1.9.1-p375 (26021) * removed debian/patches/090908_regexp_unicode_class.dpatch: it is included upstream release. -- akira yamada Mon, 07 Dec 2009 08:24:55 +0900 ruby1.9.1 (1.9.1.339-1) unstable; urgency=low * Interim upstream 1.9.1-p339 (r25816) * Updated debian/generated-incs/*. * Updated patches - 909_update_lib_README * Updated debian/copyright. (s/ruby1\.9/ruby1.9.1/g) * Added debian/libopenssl-ruby1.9.1.lintian-overrides. -- akira yamada Wed, 18 Nov 2009 09:51:36 +0900 ruby1.9.1 (1.9.1.243-2) unstable; urgency=low [ Lucas Nussbaum ] * Removed Fumitoshi UKAI from Uploaders. Thanks a lot for the past help! * Removed obsolete Build-Conflicts: on gcc-3.3 (<< 1:3.3.2-0pre1) * Add ${misc:Depends} to Depends of all binary packages. Avoids debhelper-but-no-misc-depends lintian warning. * Add build-dependency on debhelper >= 5, since that's the compatibility level with request in debian/compat. Avoids package-lacks-versioned-build-depends-on-debhelper lintian warning. * Fix menu file for irb1.9.1. Avoids two menu-related lintian warnings. * Optimized debian/rmshebang.sh a bit. * Removed outdated option from DEB_CONFIGURE_USER_FLAGS: --with-default-kcode=none * Remove 901_extra_search_path: no longer needed. * Use --program-suffix=1.9.1 and hack configure.in so that all the paths except the ri path match what was done before. * Added debian/README.source. Avoids lintian warning. * Added a ruby1.9.1-full meta-package that depends on all the ruby 1.9.1 binary packages. Closes: #503580. * Ignore failures of test suite on FreeBSD. * Bumped Standards-Version to 3.8.3. No changes needed. * Remove executable mode on all example scripts. (fix lintian warning) * Run all tests, not just the ones in ruby/. [ akira yamada ] * Added debian/patches/090908_regexp_unicode_class.dpatch: - \d, \s and \w are now non Unicode class. [ruby-dev:39026] - warn duplicated characters in character class. [ruby-core:24593] (backported from r24387 and r24544.) -- Lucas Nussbaum Wed, 09 Sep 2009 21:55:24 +0200 ruby1.9.1 (1.9.1.243-1) unstable; urgency=low [ Daigo Moriwaki ] * debian/watch: corrected to follow the new versioning by the upstream such as 1.9.1-p0.tar.gz * Added debian/patches/090301_r22440_OCSP_basic_verify.dpatch Not properly checking the return value of OCSP_basic_verify (Closes: #513528) * Added debian/patches/090803_exclude_rdoc.dpatch to avoid errors to for generating RDoc documents. * debian/fixshebang.sh: skip non-text files, which works around hanging of sed on scanning gif images. * The upstream's COPYING* is no longer installed (due to Debian policy). That informatin is included in debian/copyright. * debian/ruby1.9.1-elisp.emacsen-{remove|startup|install}: Corrected the package name. [ Lucas Nussbaum ] * Build-Depends on procps. Closes: #510914. * Added patch 940_test_thread_mutex_sync_shorter: makes test_mutex_synchronize much shorter to deal with slow arches. Closes: #514696. * Added patch 940_hppa_disable_test_propag_signal: disable test_should_propagate signal on hppa. Closes: #514695. * Checked that 1.9.1.0 fixes CVE-2008-3905. Closes: #498977. * debian/patches cleanups. Removed obsolete patches. * Added 940_test_file_exhaustive_fails_as_root and 940_test_priority_fails to deal with test suite failures. * Disable 102_skip_test_copy_stream and 104_skip_btest_io: I couldn't reproduce the failure on x86-64. Is it arch-specific? * common-post-build-arch:: fail if the test suites fail. * Fix location of vendor dir in configure option. /usr/lib[...], not usr/lib[...]. * New upstream release: 1.9.1.243. + 090301_r22440_OCSP_basic_verify.dpatch no longer needed (was a backport) + Updated debian/generated-incs/*. * Added 090729_fix_Makefile_deps.dpatch: add dependency in common.mk between do-install-nodoc and $(PROGRAM). * Handle DEB_BUILD_OPTIONS="nocheck" to allow to skip the test suite. * Move manpages to debian/manpages/ * Started the rename from *1.9 to *1.9.1: source package and binary packages done. * Fix building on lpia (Fixes: #532057). * Disable the test suite on hppa since it blocks because of strange signal semantics. * Bumped Standards-Version to 3.8.2. No changes needed. * Agree with ftpmaster's overrides. -- Lucas Nussbaum Thu, 30 Jul 2009 01:24:03 +0200 ruby1.9 (1.9.1.0-1) experimental; urgency=low * new upstream version. * updated debian/generated-incs/*. * change package name to libruby1.9.1 from librub1.9-1.9. Here "1.9.1" indicates Ruby API version. libruby1.9.1 conflicts/replaces: libruby1.9. (No confilcts/replaces for libruby1.9-1.9 because these packages are note relased to Debian.) It is preparations for ABI changes in the future version of Ruby 1.9. * adjusted 903_skip_base_ruby_check. * updated 931_libruby_suffix. ruby runtime library is libRUBYNAME-1.9.1.so*. * updated debian/NEWS. -- akira yamada Tue, 03 Feb 2009 22:23:42 +0900 ruby1.9 (1.9.1~rc2-1) experimental; urgency=low * new upstream release. * updated debian/generated-incs/*. * updated 202_gem_default_dir. * change package name to libruby1.9-1.9 from librub1.9. (libruby1.9-1.9 conflicts/replaces: libruby1.9.) It is preparations for ABI changes in the future version of Ruby 1.9. * added 931_libruby_suffix. It filechanges name of ruby runtime library to libRUBYNAME-1.9.so* from libRUBYNAME.so. -- akira yamada Thu, 22 Jan 2009 10:08:27 +0900 ruby1.9 (1.9.1~rc1-1) experimental; urgency=low * new upstream release. * updated 202_gem_default_dir. * updated 201_gem_prelude and re-entered to 00list. * removed unneeded dpatches: - 308_r20120_rexml_DoS_fix_regression - 920_rexml_document_transitive.dpatch * added 203_adjust_base_of_search_path: it changes base directory of search path to /usr/lib/ruby from /usr/lib/ruby1.9 for compatibility. ("ruby1.9" come from ruby_install_name.) [experimental] * debian/rules: configure with --vendor-ruby=/usr/lib/ruby/vendor_ruby for compatibility. [experimental] -- akira yamada Thu, 15 Jan 2009 11:17:40 +0900 ruby1.9 (1.9.1~preview1-1) experimental; urgency=low * new upstream release. * old "i386-linux" directory is no longer supported. * updated debian/generated-incs/*. * removed unneeded dpatch from 00list: - 101_parse_rb.dpatch - 103_array_c_r17570_to_r17756.dpatch - 201_gem_prelude.dpatch - 301_dns_spoofing_r18424 - 302_r18220_webrick_DoS - 303_r17726_syslog_safeleve4 - 304_r17577_trace_var_safeleve4 - 305_r18496_dl_tain - 306_r17586_methods_called_safelevel13 - 307_r19033_rexml_DoS - 930_zero_tainted * applied patches: - 202_gem_default_dir: regenerated from 201_gem_prelude. - 308_r20120_rexml_DoS_fix_regression: fixes regression. -- akira yamada Thu, 13 Nov 2008 16:06:57 +0900 ruby1.9 (1.9.0.2-9) unstable; urgency=high * fixes regression: - 307_r19033_rexml_DoS.dpatch: fixed DoS vulnerability in REXML. (ref: #502535) -- akira yamada Thu, 13 Nov 2008 13:26:36 +0900 ruby1.9 (1.9.0.2-8) unstable; urgency=high * Added patch: 930_zero_tainted.dpatch backport of upstream r17612. Closes: #501408 (RC bug). -- Lucas Nussbaum Thu, 16 Oct 2008 22:15:33 +0200 ruby1.9 (1.9.0.2-7) unstable; urgency=low * debian/rules: Fixed a FTBFS on hurd-i386: failure of cat /proc/cpuinfo no more stops the build process. (Closes: #497737) -- Daigo Moriwaki Fri, 05 Sep 2008 12:07:57 +0900 ruby1.9 (1.9.0.2-6) unstable; urgency=low * Added patches under debian/patches which were backported from the upstream and fixed multiple vulnerabilities: - 301_dns_spoofing_r18424.dpatch: fixed DNS spoofing vulnerability in resolv.rb. (CVE-2008-1447) - 302_r18220_webrick_DoS.dpatch: fixed DoS vulnerability in WEBrick. - 303_r17726_syslog_safeleve4.dpatch: syslog operations should be protected from $SAFE level 4. - 304_r17577_trace_var_safeleve4.dpatch: rb_f_trace_var should not be allowed at safe level 4. - 305_r18496_dl_tain.dpatch: dl doesn't check taintness, so it could allow attackers to call dangerous functions. - 306_r17586_methods_called_safelevel13.dpatch: Insecure methods may be called at safe level 1-3. (Closes: #494402) - 307_r19033_rexml_DoS.dpatch: fixed DoS vulnerability in REXML. (CVE-2008-3790) (Closes: #497610) -- Daigo Moriwaki Tue, 02 Sep 2008 22:11:34 -0400 ruby1.9 (1.9.0.2-5) unstable; urgency=low [ Lucas Nussbaum ] * Because of make's dependency handling on phony targets after the addition of the watch in 1.9.0.1-4, parse.o was rebuilt three times during the build process. Build it only once, which should reduce the build time significantly. [ Daigo Moriwaki ] * RubyGems did not work completely due to a gem_relude mechanism . This issue has been fixed. (Closes: #492206) - debian/patches/201_gem_prelude.dpatch - debian/rules -- Daigo Moriwaki Thu, 31 Jul 2008 00:54:00 +0900 ruby1.9 (1.9.0.2-4) unstable; urgency=low * Modified computing of arch_name to cope with armel. This was broken because of the change for lpia. We are now using the same code as ruby1.8's debian/rules. Closes: #490663. * Cleaned up debian/rules to use DEB_HOST_* instead of DEB_BUILD_*. -- Lucas Nussbaum Sun, 13 Jul 2008 16:30:24 +0200 ruby1.9 (1.9.0.2-3) unstable; urgency=low * Updated 102_skip_test_copy_stream.dpatch to also ignore test_copy_stream_socket. -- Lucas Nussbaum Sat, 12 Jul 2008 16:12:53 +0200 ruby1.9 (1.9.0.2-2) unstable; urgency=low * applied debian/patches/103_array_c_r17570_to_r17756.dpatch: - fixed an integer overflow bug. -- Daigo Moriwaki Wed, 09 Jul 2008 00:06:50 +0900 ruby1.9 (1.9.0.2-1) unstable; urgency=high * New upstream release. * debian/generated-incs/*.inc: updated. They were created directly from the source using ruby1.8. * Fixed vulnerability: arbitrary code execution vulnerability and so on (Closes: #487239) * debian/watch: supported the version numbering of the upstream. * removed patches that the upstream has applied: - debian/patches/800_parse_shebang_in_usascii.dpatch - debian/patches/801_too_strict_encoding_check.dpatch - debian/patches/802_hash_compare_by_identity.dpatch - debian/patches/803_syntaxerror_irb_bug.dpatch - debian/patches/804_debug.rb_is_bloken.dpatch - debian/patches/805_webrick_file_access_vulnerability.dpatch * removed patches since this package no longer provides rubygems. - debian/patches/910_gem_prelude.dpatch - debian/patches/911_default_gem_path.dpatch - debian/patches/913_disable_update_system.dpatch - debian/patches/917_avoid_ioseek.dpatch - debian/patches/918_tighter_search_regex.dpatch * Added debian/patches/101_parse_rb.dpatch: RDoc might have failed to parse. * Added debian/patches/102_skip_test_copy_stream.dpatch: skip a test -- Daigo Moriwaki Sat, 21 Jun 2008 16:02:58 +0900 ruby1.9 (1.9.0.1-5) experimental; urgency=low * The gem1.9 package is removed. Use rubygems1.9 instead. -- Daigo Moriwaki Sun, 08 Jun 2008 22:58:14 +0900 ruby1.9 (1.9.0.1-4) experimental; urgency=low * Improved 919_common.mk_tweaks.dpatch: outputs the result of "ps" on a regular basis, so the build doesn't timeout on slow arches like mips(el). * Move gem1.9 to a seperate package. This is necessary because gem1.9 requires rdoc1.9 (see https://bugs.launchpad.net/ubuntu/+source/ruby1.9/+bug/228345 ), so there are two solutions: - keep gem1.9 in ruby1.9, and merge back rdoc1.9. This cause people interested in running ruby apps (not developing ruby scripts) to install lots of unnecessary stuff. - move rubygems to a separate package. -- Lucas Nussbaum Sat, 24 May 2008 11:25:34 +0200 ruby1.9 (1.9.0.1-3) experimental; urgency=low * Add uname and /proc/cpuinfo output to the build log. * Added 919_common.mk_tweaks.dpatch: build more verbosely. Needed to avoid a timeout on mips(el). * Added 904_linux_target_os.dpatch from Ubuntu. Robustifies check for target_os. * debian/rules: Improved substitutions in arch_name (also from Ubuntu). -- Lucas Nussbaum Sat, 17 May 2008 18:04:13 +0200 ruby1.9 (1.9.0.1-2) experimental; urgency=low * Build with -O2 everywhere by default. * Upload to experimental to see how things work out. -- Lucas Nussbaum Wed, 07 May 2008 15:45:40 +0200 ruby1.9 (1.9.0.1-1) unstable; urgency=low [ akira yamada ] * new upstream snapshot 1.9.0-1. * debian/generated-incs/*: updated. * applied some bug fix patches: - 800_parse_shebang_in_usascii: [ruby-dev:33955] --encoding affects script encoding - 801_too_strict_encoding_check: [ruby-dev:33966] remove too strict encoding check - 802_hash_compare_by_identity: [ruby-dev:33989] Hash#compare_by_identity breaks commutativity of Hash#== - 803_syntaxerror_irb_bug: [ruby-dev:33991] SyntaxError should not be considered as IRB bug - 804_debug.rb_is_bloken: [ruby-dev:33992] debug.rb causes NoMethodError - 805_webrick_file_access_vulnerability: fixes vulnerbility of WEBrick which is described at - 900_ri_pager: updated. [ Lucas Nussbaum ] * debian/control: Added myself to Uploaders:. * debian/control: Added Homepage and Vcs-* fields. * added 909_update_lib_README.dpatch, backported from ruby1.8. * Improved description of ruby1.9-dev. * No longer build using gcc-4.1 on m68k. Use the default gcc version. (Closes: #463294) * debian/control: bumped Standards-Version to 3.7.3. No changes needed. * added watch file. [ Daigo Moriwaki ] * debian/control: - imporoved the description for libopenssl-ruby1.8. - ruby1.9-dev now depends on libc6-dev. -- Lucas Nussbaum Fri, 07 Mar 2008 17:35:14 +0100 ruby1.9 (1.9.0.0-2) unstable; urgency=low * Added debian/patches/910_gem_prelude.dpatch: changed the default rubygems home directory in prelude as well. (Closes: #458620) -- Daigo Moriwaki Wed, 02 Jan 2008 18:09:03 +0900 ruby1.9 (1.9.0.0-1) unstable; urgency=low [Akira Yamada] * new upstream version, 1.9.0-0. (closes: #457519, #446220) * added manpages for gem1.9 and rake1.9. * debian/generated-incs/*.inc: updated by files in upstream tarball. * debian/patches/801_update_sample_README.dpatch: removed. * debian/patches/903_skip_base_ruby_check.dpatch: updated. * debian/NEWS, debian/README.Debian: updated. [Daigo Moriwaki] * supported rubygems that has been merged with the upstream. I imported files and changes from libgems-ruby1.8_1.0.1.deb package. - added debian/patches/911_default_gem_path.dpatch - added debian/patches/913_disable_update_system.dpatch - added debian/patches/918_tighter_search_regex.dpatch - added debian/patches/917_avoid_ioseek.dpatch - added debian/libruby1.9.postrm.in - debian/patches/00list: applied above changes. - debian/README.Debian: added a note for rubygems - debian/libruby1.9.postinst.in: script to remove a cache file. - debian/rules: applied above changes. -- akira yamada Wed, 26 Dec 2007 12:46:09 +0900 ruby1.9 (1.9.0+20071225-1) unstable; urgency=low * new upstream snapshot. (r14640) * updated debian/generated-incs/* files. -- akira yamada Tue, 25 Dec 2007 10:49:38 +0900 ruby1.9 (1.9.0+20071016-1) unstable; urgency=high * new upstream snapshot. (r13713) - fixed CVE-2007-5162. - fixed illegal instructions at runtime on sparc. (closes: #366444) Thanks to Lucas Nussbaum. * updated debian/generated-incs/* files. * debian/rules: fixed wrong arch_name for arm-linux-gnueabi. (closes: #445433) Thanks to Riku Voipio. * debian/ruby1.9-elisp.emacsen-startup: uses "\\\\'" for ignore newlines in filenames. (closes: #446180) Thanks to Trent W. Buck. * debian/control: added Daigo Moriwaki to uploaders and removed Akira Tagoh from uploaders. -- akira yamada Thu, 18 Oct 2007 09:36:36 +0900 ruby1.9 (1.9.0+20070910-1) unstable; urgency=low * new upstream snapshot. (r13426) * debian/rules: added -g option to CPPFLAGS and CXXFLAGS. -- akira yamada Tue, 11 Sep 2007 10:46:09 +0900 ruby1.9 (1.9.0+20070830-2) unstable; urgency=low * configure.in: skip host ruby check. * debian/generated-incs/prelude.c: added. (closes: #440480) -- akira yamada Sun, 02 Sep 2007 09:20:54 +0900 ruby1.9 (1.9.0+20070830-1) unstable; urgency=low * new upstream snapshot. (r13318) (closes: #426134, #426267) * updated debian/generated-incs/* files. * added debian/patches/902_define_YAML_in_yaml_stringio.rb.dpatch. -- akira yamada Thu, 30 Aug 2007 13:53:44 +0900 ruby1.9 (1.9.0+20070606-1) unstable; urgency=low * new upstream snapshot. (2006-06-06) * updated debian/generated-incs/* files. -- akira yamada Wed, 06 Jun 2007 11:58:24 +0900 ruby1.9 (1.9.0+20070526-1) unstable; urgency=low * new upstream snapshot. (2006-05-26) -- akira yamada Sat, 26 May 2007 21:02:58 +0900 ruby1.9 (1.9.0+20070523-1) unstable; urgency=low * new upstream snapshot. (2006-07-23) * added debian/generated-incs/* files: They are are generated by "make incs". Updating these files is needed when the source is updated. (Closes: #425607) -- akira yamada Wed, 23 May 2007 13:21:02 +0900 ruby1.9 (1.9.0+20070521-1) unstable; urgency=low * new upstream snapshot. (2006-07-21) (Closes: #414856, #388344) -- akira yamada Mon, 21 May 2007 14:00:19 +0900 ruby1.9 (1.9.0+20060609-1) unstable; urgency=low * new upstream snapshot. (2006-06-09) * configure with -fno-strict-aliasing (Bug#370553) * rdoc1.9 suggests graphviz (Bug#339524) * debian/copyright: added a note for using libopenssl-ruby1.9. (Bug#367024) * debian/README.Debian: updated. (Closes: #344294) * added debian/patches/802_mkconfig.dpatch -- akira yamada Thu, 13 Jul 2006 22:43:47 +0900 ruby1.9 (1.9.0+20060423-4) unstable; urgency=low * reverted to 1.9.0+20060423-3. - 1.9.0+20060423-3.1 is not enough to fix the probleam and - 1.9.0+20060423-3.1 ignores dpatch :-< -- akira yamada Thu, 7 Jul 2006 22:44:23 +0900 ruby1.9 (1.9.0+20060423-3.1) unstable; urgency=low * Non-maintainer upload. * Make mkconfig.rb understand autoconf >2.59a's new way of doing config.status; it inserts #|_!!_|# into the sed lines temporarily, then removes them at the end. Since mkconfig.rb only parses these lines instead of executing the entire sed script, it has to remove #|_!!_|# by itself. This fixes FTBFS with newer autoconf. (Closes: #373953) -- Steinar H. Gunderson Sun, 25 Jun 2006 16:05:24 +0200 ruby1.9 (1.9.0+20060423-3) unstable; urgency=low * akira yamada - debian/control, debian/rules: uses gcc-4.1 for m68k. (Closes: #360745) -- akira yamada Tue, 25 Apr 2006 23:00:39 +0900 ruby1.9 (1.9.0+20060423-2) unstable; urgency=medium * akira yamada - debian/rules: CFLAGS=-O0 for avoiding a bug of gcc-4.0 on m68k. (Closes: #360745) -- akira yamada Tue, 25 Apr 2006 12:46:34 +0900 ruby1.9 (1.9.0+20060423-1) unstable; urgency=low * akira yamada - new upstream snapshot. (2006-04-23) -- akira yamada Sun, 23 Apr 2006 18:14:31 +0900 ruby1.9 (1.9.0+20050921-1) unstable; urgency=high * akira yamada - new upstream snapshot. (2005-09-21) - [security] JVN#62914675 CVE-2005-2337 - preserve safe level in the environment where a method is defined. - prohibit calling tainted method (>2) when $SAFE == 0. - removed debian/patches/802_workaround_for_send.dpatch: - the patch is in upstream. - debian/control: build-depends on libreadline5-dev. (closes: #326333) -- akira yamada Wed, 21 Sep 2005 13:16:19 +0900 ruby1.9 (1.9.0+20050902-1) unstable; urgency=high * akira yamada - new upstream snapshot. (2005-09-02) - [security] preserve safe level in the environment where a method is defined. - added debian/patches/802_workaround_for_send.dpatch: - workaround for changed behavior of __send__. [ruby-dev:26935] -- akira yamada Fri, 2 Sep 2005 15:21:10 +0900 ruby1.9 (1.9.0+20050727-1) unstable; urgency=low * akira yamada - new upstream snapshot. (2005-07-27) - removed debian/patches/803_runruby.rb_loadpath.dpatch: - the patch is in upstream source. -- akira yamada Wed, 3 Aug 2005 19:56:18 +0900 ruby1.9 (1.9.0+20050623-2) unstable; urgency=high * akira yamada - debian/rules: supported to build with dpkg-dev_1.13. (ref: ) - changed arch-name for Ruby to i486-linux from i386-linux because DEB_BUILD_GNU_TYPE is changed to i486-linux-gnu from i386-linux. - (urgency high) used -linux instead of -linux-gnu for paths in debian/*.files. (ref: Bug#315566) - added patches/902_extra_search_path.patch: - temporally added "/usr/local/lib/site_ruby/1.8/i386-linux" and "/usr/lib/ruby/1.8/i386-linux" as extra search paths to Ruby on ix86 arch. - added debian/NEWS. -- akira yamada Wed, 29 Jun 2005 23:53:01 +0900 ruby1.9 (1.9.0+20050623-1) unstable; urgency=high * akira yamada - new upstream snapshot. - (urgency high) fixed arbitrary command execution on XMLRPC server. [ruby-core:5237] (see: CAN-2005-1992, Bug#315064) - added debian/patches/803_runruby.rb_loadpath.dpatch: - runruby.rb should require rbconfig.rb in source directory. (it is for make install-doc.) -- akira yamada Thu, 23 Jun 2005 20:33:03 +0900 ruby1.9 (1.9.0+20050412-4) unstable; urgency=low * akira yamada - debian/rules: CFLAGS=-O0 is for ia64 not for i386. -- akira yamada Sun, 17 Apr 2005 03:30:22 +0900 ruby1.9 (1.9.0+20050412-3) unstable; urgency=high - debian/rules: fixed wrong filename conversion. (closes: #304809) - debian/libruby1.9.*.in: should not be empty. -- akira yamada Sat, 16 Apr 2005 01:44:05 +0900 ruby1.9 (1.9.0+20050412-2) unstable; urgency=high * akira yamada - debian/rules: binary-install/ should contain dh_movefiles only, because "debian/rules binary-arch" cannot create some directories. -- akira yamada Fri, 15 Apr 2005 06:47:44 +0900 ruby1.9 (1.9.0+20050412-1) unstable; urgency=low * akira yamada - uploaded to Debian. (closes: #256004) -- akira yamada Wed, 13 Apr 2005 18:06:34 +0900 ruby1.9 (1.9.0+20050412-0+1) unstable; urgency=low * akira yamada - initial packaging. -- akira yamada Wed, 13 Apr 2005 07:28:16 +0900 debian/ruby1.9.3.links0000664000000000000000000000152412247132667011620 0ustar /usr/share/man/man1/rdoc1.9.1.1.gz /usr/share/man/man1/rdoc1.9.3.1.gz /usr/share/man/man1/testrb1.9.1.1.gz /usr/share/man/man1/testrb1.9.3.1.gz /usr/share/man/man1/rake1.9.1.1.gz /usr/share/man/man1/rake1.9.3.1.gz /usr/share/man/man1/ri1.9.1.1.gz /usr/share/man/man1/ri1.9.3.1.gz /usr/share/man/man1/irb1.9.1.1.gz /usr/share/man/man1/irb1.9.3.1.gz /usr/share/man/man1/erb1.9.1.1.gz /usr/share/man/man1/erb1.9.3.1.gz /usr/share/man/man1/gem1.9.1.1.gz /usr/share/man/man1/gem1.9.3.1.gz /usr/share/man/man1/ruby1.9.1.1.gz /usr/share/man/man1/ruby1.9.3.1.gz /usr/bin/erb1.9.1 /usr/bin/erb1.9.3 /usr/bin/rake1.9.1 /usr/bin/rake1.9.3 /usr/bin/ri1.9.1 /usr/bin/ri1.9.3 /usr/bin/irb1.9.1 /usr/bin/irb1.9.3 /usr/bin/gem1.9.1 /usr/bin/gem1.9.3 /usr/bin/rdoc1.9.1 /usr/bin/rdoc1.9.3 /usr/bin/testrb1.9.1 /usr/bin/testrb1.9.3 /usr/bin/ruby1.9.1 /usr/bin/ruby1.9.3 debian/testrb1.9.1.rd0000664000000000000000000000203612247132667011424 0ustar =begin = NAME testrb1.9 - Automatic runnter for Test::Unit of Ruby = SYNOPSIS testrb1.9 [options] [-- untouched arguments] test ... = DESCRIPTION testrb1.9 loads and runs unit-tests. If test is directory name, testrb1.9 testrb1.9 traverses the directory. = OPTIONS : -r, --runner=RUNNER Use the given RUNNER. (t[k], c[onsole], g[tk], f[ox]) : -a, --add=TORUN Add TORUN to the list of things to run; can be a file or a directory. : -p, --pattern=PATTERN Match files to collect against PATTERN. (default pattern is /\Atest_.*\.rb\Z/.) : -n, --name=NAME Runs tests matching NAME. (patterns may be used.) : -t, --testcase=TESTCASE Runs tests in TestCases matching TESTCASE. (patterns may be used.) : -v, --verbose=[LEVEL] Set the output level (default is verbose). (p[rogress], n[ormal], v[erbose], s[ilent]) : -- Stop processing options so that the remaining options will be passed to the test. : -h, --help Display help. = AUTHOR This manpage was contributed by akira yamada =end