Project

General

Profile

Actions

Bug #7050

closed

encoding of String#unpack for 'H', 'h', 'B' and 'b'

Added by Eregon (Benoit Daloze) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 2.0.0dev (2012-07-15 trunk 36395) [x86_64-darwin10.8.0]
Backport:
[ruby-core:47653]

Description

Originally mentioned in #6799, I think the encoding of the resulting Strings for the 'H', 'h', 'B' and 'b' directives of String#unpack should be encoded in US-ASCII, because they will always contain 0-9a-f (0-1 for 'B','b') chars.

This is already done for the 'm', 'M' and 'u' directives in Array#pack.

It would also fix SecureRandom hexdigests as mentioned in #6799.

P.S.: Does anyone know the rationale behind which method to use for 'u','m','M' and 'H','h','B','b' ?
To have a base64 representation you need [s].pack('m') (and so #pack is used for 'u','m','M' to obtain the specified format), but for 'H','h','B','b' you need s.unpack(directive). I think the latter makes more sense when compared to other types such as 'l', in which #unpack is used to obtain the desired format.


Files

Updated by Eregon (Benoit Daloze) over 11 years ago

I would of course also add Aaron's test for SecureRandom hexdigests if this is fine to be merged.

Updated by tenderlovemaking (Aaron Patterson) over 11 years ago

I would really like this to be added! (Thank you for writing the patch)

Updated by Eregon (Benoit Daloze) over 11 years ago

Ping!

I would like to merge this.
If there are no objections, may I merge this in a week?

Actions #4

Updated by naruse (Yui NARUSE) over 11 years ago

Eregon (Benoit Daloze) wrote:

Ping!

I would like to merge this.
If there are no objections, may I merge this in a week?

OK, here you go

Actions #5

Updated by Eregon (Benoit Daloze) over 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37269.
Benoit, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


set encoding to ASCII for appropriate String#unpack modifiers

  • pack.c (pack_unpack): set encoding of the
    'H','h','B' and 'B' modifiers to US-ASCII.
  • test/ruby/test_pack.rb: tests for the above.
    [ruby-core:47653][Bug #7050]
  • test/test_securerandom.rb: tests for SecureRandom.hex
    from tenderlove. [ruby-core:46792][Bug #6799]

Updated by Eregon (Benoit Daloze) over 11 years ago

On 19 October 2012 07:47, naruse (Yui NARUSE) wrote:

Eregon (Benoit Daloze) wrote:

Ping!

I would like to merge this.
If there are no objections, may I merge this in a week?

OK, here you go

Thank you!

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0