Project

General

Profile

Actions

Bug #20802

open

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) 11 days ago. Updated 11 days ago.

Status:
Open
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
Like0