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