fix for: https://issues.apache.org/jira/browse/AMQCPP-359
git-svn-id: https://svn.apache.org/repos/asf/activemq/activemq-cpp/branches/activemq-cpp-3.2.x@1087351 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/activemq-cpp/src/main/activemq/commands/ActiveMQBytesMessage.cpp b/activemq-cpp/src/main/activemq/commands/ActiveMQBytesMessage.cpp
index 68a5df1..370f8b8 100644
--- a/activemq-cpp/src/main/activemq/commands/ActiveMQBytesMessage.cpp
+++ b/activemq-cpp/src/main/activemq/commands/ActiveMQBytesMessage.cpp
@@ -33,6 +33,7 @@
using namespace activemq::exceptions;
using namespace decaf::io;
using namespace decaf::lang;
+using namespace decaf::lang::exceptions;
using namespace decaf::util;
using namespace decaf::util::zip;
@@ -307,6 +308,10 @@
initializeReading();
try{
+ if( length < 0 ) {
+ throw IndexOutOfBoundsException(__FILE__, __LINE__, "Array length given was negative");
+ }
+
int n = 0;
while( n < length ) {
diff --git a/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp b/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp
index b7f229d..84b68fa 100644
--- a/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp
+++ b/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp
@@ -212,6 +212,12 @@
for( int i = 0; i < 50; i++ ) {
CPPUNIT_ASSERT( test[i] == i );
}
+
+ CPPUNIT_ASSERT_THROW_MESSAGE(
+ "Should have thrown a CMSException",
+ msg.readBytes( test, -1 ),
+ CMSException);
+
} catch( CMSException& ex ) {
ex.printStackTrace();
CPPUNIT_ASSERT( false );