среда, 6 июля 2011 г.

Re: Странный баг SecureRandom в rails 3.1


On 6 jul 2011, at 15:09, dmitry zhelnin wrote:

. Как такое может быть?
А вот так. https://github.com/julik/rails_secure_random_bug/commit/466fc247f88258e0f044d4b302f5fec3f0b12e7e

Это потому что <insert лучи уничтожающей ненависти уродам которые делают интерпретаторы со сменными кодировками строк>.

Потому что

irb(main):006:0> Encoding.default_internal
=> #<Encoding:UTF-8>
irb(main):007:0> foo = "abcdef"
=> "abcdef"
irb(main):008:0> foo.encoding
=> #<Encoding:UTF-8>
irb(main):009:0> random = SecureRandom.hex(123)
=> "скипано"
irb(main):010:0> random.encoding
=> #<Encoding:ASCII-8BIT>
irb(main):011:0> SecureRandom.methods - Object.methods
=> [:random_bytes, :hex, :base64, :urlsafe_base64, :random_number, :uuid, :lastWin32ErrorMessage]
irb(main):012:0> SecureRandom.base64(23)
=> "W0CcuAAFtq3eeufq6BapT3sGlsAGKIY="
irb(main):013:0> SecureRandom.base64(23).encoding
=> #<Encoding:US-ASCII>
irb(main):014:0> SecureRandom.base64(23).encoding
=> #<Encoding:US-ASCII>

То есть эта сволочь возвращает ну ВСЕ кроме собственно строки в utf8.
Я не знаю как sqlite3-ruby там изгаляется с перекодированием этой строки но что-то мне подсказывает что хреново изгаляется.

А теперь хитрость. Тот кто подыграет линию "нефиг юзать руби 192" и "какие японцы сволочи" не участвует в дискуссии конструктивно. А тот кто пойдет и зафайлит
японцам issue на него - тому конфетка.
-- 
Julik






Комментариев нет:

Отправить комментарий