[#58730] [ruby-trunk - misc #9188][Open] r43870 make benchmark/bm_so_k_nucleotide.rb slow — "authorNari (Narihiro Nakamura)" <authorNari@...>

17 messages 2013/12/01

[#58732] [ruby-trunk - Bug #9189][Open] Build failure on Windows in case of nonascii TEMP environment. — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/01

[#58750] [ruby-trunk - Feature #9190][Open] Expose serial helper macros — "simeonwillbanks (Simeon Willbanks)" <sfw@...>

13 messages 2013/12/01

[#58756] [ruby-trunk - Bug #9192][Open] Inconsistent comparison between Float and BigDecimal — "vatsu (Gustavo Sales)" <vatsu21@...>

18 messages 2013/12/02

[#58797] [ruby-trunk - Bug #9198][Open] Segfault in TestException#test_machine_stackoverflow — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/12/02

[#58833] [ruby-trunk - Bug #9205][Open] Assertion failed: heap_pages_deferred_final == 0 — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/03

[#58866] [ruby-trunk - misc #9215][Open] Maintenance Policy for Future Releases (2.1.0 & beyond) — "hone (Terence Lee)" <hone02@...>

17 messages 2013/12/05

[#58876] [ruby-trunk - Bug #9221][Open] Time.parse performance becomes exponentially worse as string length grows — "mpelzsherman (Michael Pelz-Sherman)" <mpelzsherman@...>

15 messages 2013/12/05

[#58948] [ruby-trunk - Bug #9226][Open] Getting method `inspect' called on unexpected T_NODE object (0x000000025ddea8 flags=0x109089c klass=0x0) (NotImplementedError) from Hash#inspect — "myronmarston (Myron Marston)" <myron.marston@...>

11 messages 2013/12/07

[#59032] [ruby-trunk - Bug #9239][Open] Array#to_h ignores flat arrays — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

15 messages 2013/12/10

[#59122] [ruby-trunk - Bug #9251][Open] ! operator has lower precedence than = in an assignment expression — "rits (First Last)" <redmine@...>

26 messages 2013/12/15

[#59198] [ruby-trunk - Bug #9262][Open] global_method_cache should be configurable or grow automatically — "tmm1 (Aman Gupta)" <ruby@...1.net>

28 messages 2013/12/19

[#59209] [ruby-trunk - Bug #9264][Open] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "spastorino (Santiago Pastorino)" <santiago@...>

15 messages 2013/12/19
[#59211] [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "zzak (Zachary Scott)" <e@...> 2013/12/19

[#59212] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

zzak, make distclean is the first thing I've ran. Read the gist again :),

[#59213] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

Sorry I missed the gist, can you try building outside of $srcdir?

[#59214] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

It works if I do ...

[#59215] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

I've been using the following:

[#59255] [ruby-trunk - Bug #9276][Open] "RUBY_FREE_MIN is obsolete. Use RUBY_GC_HEAP_FREE_SLOTS instead" warning should not be issued when both ENV vars are set. — "myronmarston (Myron Marston)" <myron.marston@...>

10 messages 2013/12/21

[#59260] [ruby-trunk - Feature #9278][Open] Magic comment "immutable: string" makes "literal".freeze the default for that file — "colindkelley (Colin Kelley)" <colin@...>

12 messages 2013/12/22

[#59343] [ruby-trunk - Bug #9309][Open] Crash while running tests — "mdemare (Michiel de MAre)" <merloen@...>

12 messages 2013/12/27

[#59345] [ruby-trunk - Bug #9310][Open] inheritance.rb: 27: [BUG] Segmentation fault at 0x00000c — "jasnow (Al Snow)" <jasnow@...>

10 messages 2013/12/27

[#59349] [ruby-trunk - Bug #9312][Open] Build the ruby executable in bin/ — "postmodern (Hal Brodigan)" <postmodern.mod3@...>

13 messages 2013/12/28

[#59365] [ruby-trunk - Bug #9316][Open] BigDecimal division in Ruby 2.1 — "abernardes (Andre Oliveira)" <abernardes@...>

15 messages 2013/12/28

[#59398] [ruby-trunk - Bug #9321][Open] rb_mod_const_missing does not generate a c-return event — "drkaes (Stefan Kaes)" <stkaes@...>

41 messages 2013/12/30

[#59429] [ruby-trunk - Feature #9330][Open] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets — "normalperson (Eric Wong)" <normalperson@...>

10 messages 2013/12/31

[ruby-core:58804] [ruby-trunk - Bug #9028][Assigned] Make SSLSocket Support Encodings

From: "drbrain (Eric Hodel)" <drbrain@...7.net>
Date: 2013-12-02 22:14:31 UTC
List: ruby-core #58804
Issue #9028 has been updated by drbrain (Eric Hodel).

File openssl.buffering.rb.encoding.patch added
Category set to ext/openssl
Status changed from Open to Assigned
Assignee changed from drbrain (Eric Hodel) to MartinBosslet (Martin Bosslet)
Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: REQUIRED

The attached patch makes OpenSSL::Buffering methods return ASCII-8BIT strings for all results.

This doesn't bring encoding support to OpenSSL::SSL::Socket, but it avoids the bug of the buffering methods sometimes returning UTF-8 and sometimes returning ASCII-8BIT strings.
----------------------------------------
Bug #9028: Make SSLSocket Support Encodings
https://bugs.ruby-lang.org/issues/9028#change-43371

Author: whitehat101 (Jeremy Ebler)
Status: Assigned
Priority: Normal
Assignee: MartinBosslet (Martin Bosslet)
Category: ext/openssl
Target version: 
ruby -v: 1.9.3, 2.0.0-p0
Backport: 1.9.3: DONTNEED, 2.0.0: REQUIRED


I was working on a bug in the xmpp4r project that caused REXML exceptions when receiving UTF-8 Strings.
https://github.com/xmpp4r/xmpp4r/issues/13

The issue ended up being that SSLSocket#readline didn't always return strings with the same encoding. It gave plain ASCII strings an encoding of UTF-8, and UTF-8 strings an encoding of ASCII-8BIT. We were passing the SSLSocket directly to REXML::Parsers::SAX2Parser and REXML throws exceptions when the input is not UTF-8.

Our solution, wrap the socket and always return consistently encoded strings:

class SSLSocketUtf8 < OpenSSL::SSL::SSLSocket
  def sysread *args
    super.force_encoding ::Encoding::UTF_8
  end
end


<whitehat101> Hello, I'm investigating some strange behavior with OpenSSL::SSL::SSLSocket and string encodings
<whitehat101> #readline returns UTF-8 encoded strings, until the string actually contains UTF-8, then it claims that the encoding is ASCII-8BIT
<whitehat101> I've been reading through the source, and I'm not sure where to try to patch it
<drbrain> whitehat101: have an example script?
<drbrain> whitehat101: can you reproduce it with #sysread?
<drbrain> if you can, the problem lies in the C code
<drbrain> if you cannot, the problem lies in the OpenSSL::Buffering module
<whitehat101> I don't have a concise example, I'm working with the xmpp4r project
<drbrain> whitehat101: look at sample/openssl/echo_*
<drbrain> you can probably make a simple example out of that
<whitehat101> I found that #sysread always returns 8BIT, but #readline usually gives UTF-8
<whitehat101> Thank you, i'll look at those
<drbrain> whitehat101: then I imagine the problem is that OpenSSL::Buffering#initialize creates a UTF-8 buffer
<drbrain> (@rbuffer)
<drbrain> I bet that # encoding: ASCII-8BIT at the very top of the file will fix it
<whitehat101> in buffering.rb?
<drbrain> in ext/openssl/lib/openssl/buffering.rb
<whitehat101> My feeling is that these functions should be returning UTF-8
<whitehat101> A patch that works for my project:
    class SSLSocketUtf8 < OpenSSL::SSL::SSLSocket
      def sysread *args
        super.force_encoding ::Encoding::UTF_8
      end
    end
<drbrain> hrm
<drbrain> they should be returning the encoding of the SSLSocket
<whitehat101> It doesn't look like SSLSocket has any supportfor encodings
<whitehat101> I tried setting the encoding of the TCPSocket, but it had no effect
<drbrain> since SSLSocket wraps the TCPSocket, I don't know if that has an effect on SSLSocket#sysread
<whitehat101> I'm guessing that SSLSocket has no idea what the encoding is, it just deals with bytes
<whitehat101> We're passing the SSLSocket directly to  REXML::Parsers::SAX2Parser
<whitehat101> and REXML throws exceptions when the input is not UTF-8
<drbrain> possibly, since it isn't an IO subclass and doesn't seem to respond to #set_encoding
<drbrain> setting the encoding on the TCPSocket probably has no effect because SSLSocket needs to read binary data off the TCPSocket
<drbrain> the ultimate solution would be "make SSLSocket support encodings"
<whitehat101> That sounds right to me
<drbrain> a short-term fix would be "make the SSLSocket methods return a consistent encoding, regardless of correctness"
<drbrain> whitehat101: if you file a bug, maybe I'll find the time to fix it for ruby 2.1
<drbrain> you can file one here: http://bugs.ruby-lang.org/projects/ruby-trunk/issues/new
<whitehat101> That would be excellent, thanks
<whitehat101> Should I try to make an example, or just include this conversation?
<drbrain> this conversation is enough



-- 
http://bugs.ruby-lang.org/

In This Thread