Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 093C08D93 for ; Mon, 8 Aug 2011 14:16:55 +0000 (UTC) Received: (qmail 69277 invoked by uid 500); 8 Aug 2011 14:16:54 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 69254 invoked by uid 500); 8 Aug 2011 14:16:54 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 69246 invoked by uid 99); 8 Aug 2011 14:16:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Aug 2011 14:16:54 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Aug 2011 14:16:51 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 6184123889C5 for ; Mon, 8 Aug 2011 14:16:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1154969 - in /cassandra/trunk/src/java/org/apache/cassandra/io/compress: CompressedRandomAccessReader.java CompressedSequentialWriter.java Date: Mon, 08 Aug 2011 14:16:31 -0000 To: commits@cassandra.apache.org From: slebresne@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110808141631.6184123889C5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: slebresne Date: Mon Aug 8 14:16:30 2011 New Revision: 1154969 URL: http://svn.apache.org/viewvc?rev=1154969&view=rev Log: Fix OutOfBounds with compression patch by slebresne; reviewed by stuhood for CASSANDRA-2994 Modified: cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java Modified: cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java?rev=1154969&r1=1154968&r2=1154969&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java Mon Aug 8 14:16:30 2011 @@ -135,7 +135,7 @@ public class CompressedRandomAccessReade { super(new File(dataFilePath), metadata.chunkLength, skipIOCache); this.metadata = metadata; - compressed = new byte[metadata.chunkLength]; + compressed = new byte[Snappy.maxCompressedLength(metadata.chunkLength)]; // can't use super.read(...) methods // that is why we are allocating special InputStream to read data from disk // from already open file descriptor Modified: cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java?rev=1154969&r1=1154968&r2=1154969&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressedSequentialWriter.java Mon Aug 8 14:16:30 2011 @@ -53,7 +53,7 @@ public class CompressedSequentialWriter super(file, CHUNK_LENGTH, skipIOCache); // buffer for compression should be the same size as buffer itself - compressed = new byte[buffer.length]; + compressed = new byte[Snappy.maxCompressedLength(buffer.length)]; /* Index File (-CompressionInfo.db component) and it's header */ metadataWriter = new CompressionMetadata.Writer(indexFilePath); @@ -85,6 +85,7 @@ public class CompressedSequentialWriter chunkCount++; // write data itself + assert compressedLength <= compressed.length; out.write(compressed, 0, compressedLength); // next chunk should be written right after current