[Bug #20755] Frozen string should not be writable via IO::Buffer

This commit is contained in:
Nobuyoshi Nakada 2024-09-30 22:49:09 +09:00
parent 3ebc85e240
commit 35e124832e
No known key found for this signature in database
GPG key ID: 3582D74E1FEE4465
Notes: git 2024-10-01 10:59:57 +00:00
2 changed files with 27 additions and 1 deletions

View file

@ -843,7 +843,8 @@ rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size)
static inline void
io_buffer_get_bytes_for_writing(struct rb_io_buffer *buffer, void **base, size_t *size)
{
if (buffer->flags & RB_IO_BUFFER_READONLY) {
if (buffer->flags & RB_IO_BUFFER_READONLY ||
(!NIL_P(buffer->source) && OBJ_FROZEN(buffer->source))) {
rb_raise(rb_eIOBufferAccessError, "Buffer is not writable!");
}