From 308a7017bef7d242b656ed994ab26fea76089fd8 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Fri, 15 Jul 2011 20:23:59 +0100
Subject: [PATCH] Check that EOF occurs when expected.

---
 components/net/sf/briar/protocol/BundleReaderImpl.java  | 3 ++-
 components/net/sf/briar/protocol/BundleWriterImpl.java  | 1 -
 components/net/sf/briar/protocol/MessageParserImpl.java | 6 +++++-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/components/net/sf/briar/protocol/BundleReaderImpl.java b/components/net/sf/briar/protocol/BundleReaderImpl.java
index 30dd99faa5..d5ef833c95 100644
--- a/components/net/sf/briar/protocol/BundleReaderImpl.java
+++ b/components/net/sf/briar/protocol/BundleReaderImpl.java
@@ -28,7 +28,6 @@ import net.sf.briar.api.serial.ReaderFactory;
 
 import com.google.inject.Inject;
 
-/** A bundle that deserialises its contents on demand using a reader. */
 class BundleReaderImpl implements BundleReader {
 
 	private static enum State { START, FIRST_BATCH, MORE_BATCHES, END };
@@ -98,6 +97,8 @@ class BundleReaderImpl implements BundleReader {
 		if(state != State.MORE_BATCHES) throw new IllegalStateException();
 		if(r.hasListEnd()) {
 			r.readListEnd();
+			// That should be all
+			if(!r.eof()) throw new FormatException();
 			state = State.END;
 			return null;
 		}
diff --git a/components/net/sf/briar/protocol/BundleWriterImpl.java b/components/net/sf/briar/protocol/BundleWriterImpl.java
index 09e7d72b62..d842b9ee5f 100644
--- a/components/net/sf/briar/protocol/BundleWriterImpl.java
+++ b/components/net/sf/briar/protocol/BundleWriterImpl.java
@@ -15,7 +15,6 @@ import net.sf.briar.api.serial.Raw;
 import net.sf.briar.api.serial.Writer;
 import net.sf.briar.api.serial.WriterFactory;
 
-/** A bundle builder that serialises its contents using a writer. */
 class BundleWriterImpl implements BundleWriter {
 
 	private static enum State { START, FIRST_BATCH, MORE_BATCHES, END };
diff --git a/components/net/sf/briar/protocol/MessageParserImpl.java b/components/net/sf/briar/protocol/MessageParserImpl.java
index b2d01c36ef..422d0d24ac 100644
--- a/components/net/sf/briar/protocol/MessageParserImpl.java
+++ b/components/net/sf/briar/protocol/MessageParserImpl.java
@@ -60,9 +60,13 @@ class MessageParserImpl implements MessageParser {
 		AuthorId author = new AuthorId(messageDigest.digest());
 		// Skip the message body
 		r.readRaw();
-		// Verify the signature
+		// Record the length of the signed data
 		int messageLength = (int) r.getRawBytesRead();
+		// Read the signature
 		byte[] sig = r.readRaw();
+		// That should be all
+		if(!r.eof()) throw new FormatException();
+		// Verify the signature
 		PublicKey publicKey;
 		try {
 			publicKey = keyParser.parsePublicKey(encodedKey);
-- 
GitLab