From: nobu@... Date: 2014-07-19T23:48:05+00:00 Subject: [ruby-core:63886] [ruby-trunk - Bug #10019] [Feedback] segmentation fault/buffer overrun in pack.c (encodes) Issue #10019 has been updated by Nobuyoshi Nakada. Status changed from Closed to Feedback Priority changed from Low to Normal Will Wood wrote: > After pulling the latest code, your fix still causes a seg fault. IMO you're still overrunning the buffer. > > d:/ruby-2.1.2-i386-mingw32/lib/ruby/gems/2.1.0/gems/aws-sdk-1.48.1/lib/aws/core/signers/base.rb:29:in `sign' > d:/ruby-2.1.2-i386-mingw32/lib/ruby/2.1.0/base64.rb:38:in `encode64' Can't you show the argument to `encode64`? ---------------------------------------- Bug #10019: segmentation fault/buffer overrun in pack.c (encodes) https://bugs.ruby-lang.org/issues/10019#change-47912 * Author: Will Wood * Status: Feedback * Priority: Normal * Assignee: * Category: core * Target version: * ruby -v: ruby 2.1.2p168 (2014-07-06 revision 46721) [i386-mingw32] * Backport: 2.0.0: REQUIRED, 2.1: DONE ---------------------------------------- While working with an AWS sample I hit a segmentation fault. The same sample works under 1.9.3. It appeared to be coming from pack.c function encodes. After looking at the source there's a 4K buffer allocated on the stack. I made a minor change to base the buffer length off of the incoming buffer length with a pad and allocate it off the heap. Anyway, after fixing this my code sample runs fine. I'm including a patch file and the sample code. ---Files-------------------------------- pack.patch (2.74 KB) BucketTest.rb (326 Bytes) -- https://bugs.ruby-lang.org/