Project

General

Profile

Actions

Bug #20802

closed

It is possible to set the encoding of an IO instance to one that requires binmode when binmode is not set

Added by javanthropus (Jeremy Bopp) about 1 month ago. Updated 17 days ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [x86_64-linux]
[ruby-core:119537]

Description

I don't know what problems this may cause, but there are guards against setting the encoding of an IO instance to one such as UTF-16LE when the IO instance is not set to binary mode. Here is a method to bypass those guards:

f1 = File.open('/dev/null')
f2 = File.open('/dev/null')
f1.binmode
f1.set_encoding('utf-16le')
f2.set_encoding('utf-8')
f1.reopen(f2)

f1.binmode?            # <= false
f1.external_encoding   # <= Encoding::UTF_16LE
Actions

Also available in: Atom PDF

Like0
Like0Like0