Blob Blame History Raw
From 8053d231c79919ae9911685f0f2e69bd7ac18e72 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Mon, 9 Dec 2013 11:06:19 +0100
Subject: [PATCH] make sure this is never called with 0 length

Change-Id: Ic7726c1fbfd58ae2e0a78c203e426deedc2c461b
---
 src/lib/KEYMemoryStream.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/lib/KEYMemoryStream.cpp b/src/lib/KEYMemoryStream.cpp
index 4518546..dfa6bbb 100644
--- a/src/lib/KEYMemoryStream.cpp
+++ b/src/lib/KEYMemoryStream.cpp
@@ -8,6 +8,7 @@
  */
 
 #include <algorithm>
+#include <cassert>
 
 #include "libetonyek_utils.h"
 #include "KEYMemoryStream.h"
@@ -56,6 +57,9 @@ KEYMemoryStream::KEYMemoryStream(const unsigned char *const data, const unsigned
   , m_length(length)
   , m_pos(0)
 {
+  if (0 == length)
+    throw GenericException();
+
   assign(data, length);
 }
 
@@ -151,6 +155,8 @@ bool KEYMemoryStream::isEnd()
 
 void KEYMemoryStream::assign(const unsigned char *const data, const unsigned length)
 {
+  assert(0 != length);
+
   unsigned char *buffer = new unsigned char[length];
   std::copy(data, data + length, buffer);
   m_data = buffer;
@@ -158,6 +164,9 @@ void KEYMemoryStream::assign(const unsigned char *const data, const unsigned len
 
 void KEYMemoryStream::read(const RVNGInputStreamPtr_t &input, const unsigned length)
 {
+  if (0 == length)
+    return;
+
   unsigned long readBytes = 0;
   const unsigned char *const data = bool(input) ? input->read(length, readBytes) : 0;
   if (length != readBytes)
-- 
1.9.3