Index: /source/ariba/communication/BaseCommunication.cpp
===================================================================
--- /source/ariba/communication/BaseCommunication.cpp	(revision 8609)
+++ /source/ariba/communication/BaseCommunication.cpp	(revision 8620)
@@ -279,4 +279,5 @@
 class DispatchMsg {
 public:
+	DispatchMsg() : local(NULL), remote(NULL), message(NULL) {}
 	address_v* local;
 	address_v* remote;
@@ -385,4 +386,5 @@
 			if( !allowlink ){
 				logging_warn( "Overlay denied creation of link" );
+				delete msg;
 				return;
 			}
@@ -447,4 +449,5 @@
 			if (ld.isUnspecified()) {
 				logging_warn("Failed to find local link " << msg->getRemoteLink().toString());
+				delete msg;
 				return;
 			}
@@ -458,5 +461,4 @@
 						);
 
-
 			localDescriptor.getEndpoints().add(
 				msg->getRemoteDescriptor().getEndpoints(),
@@ -492,4 +494,5 @@
 			if (linkDesc.isUnspecified()) {
 				logging_warn("Failed to find local link " << localLink.toString());
+				delete msg;
 				return;
 			}
@@ -521,4 +524,5 @@
 				logging_warn("Failed to update local link "
 					<< localLink.toString());
+				delete msg;
 				return;
 			}
@@ -543,4 +547,5 @@
 		}
 	}
+
 	delete msg;
 }
Index: /source/ariba/communication/networkinfo/AddressDiscovery.cpp
===================================================================
--- /source/ariba/communication/networkinfo/AddressDiscovery.cpp	(revision 8609)
+++ /source/ariba/communication/networkinfo/AddressDiscovery.cpp	(revision 8620)
@@ -77,4 +77,5 @@
 	endpoint_set* set = (endpoint_set*)arg;
 	struct hci_dev_info di;
+	memset(&di, 0, sizeof(struct hci_dev_info));
 	di.dev_id = dev_id;
 	if (ioctl(s, HCIGETDEVINFO, (void *) &di)) return 0;
Index: /source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- /source/ariba/overlay/BaseOverlay.cpp	(revision 8609)
+++ /source/ariba/overlay/BaseOverlay.cpp	(revision 8620)
@@ -1436,4 +1436,5 @@
 				"Received join request for spovnet we don't handle " <<
 				joinReq->getSpoVNetID().toString() );
+		delete joinReq;
 		return false;
 	}
@@ -1459,4 +1460,5 @@
 	bc->sendMessage( bcLink, &retmsg );
 
+	delete joinReq;
 	return true;
 }
@@ -2158,4 +2160,5 @@
 		CommunicationListener* lst = getListener(service);
 		if(lst != NULL) lst->onKeyValue(dhtMsg->getKey(), dhtMsg->getValues() );
+		delete dhtMsg;
 		return true;
 	}
Index: /source/ariba/overlay/modules/onehop/OneHop.cpp
===================================================================
--- /source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 8609)
+++ /source/ariba/overlay/modules/onehop/OneHop.cpp	(revision 8620)
@@ -328,4 +328,5 @@
 		} // for( ; i != iend; i++ )
 
+		delete reply;
 	} // OneHopMessageTypeListingReply
 
@@ -353,4 +354,5 @@
 	} // OneHopMessageTypeRoute
 
+	delete onemsg;
 }
 
Index: /source/ariba/utility/messages/Message.cpp
===================================================================
--- /source/ariba/utility/messages/Message.cpp	(revision 8609)
+++ /source/ariba/utility/messages/Message.cpp	(revision 8620)
@@ -88,5 +88,5 @@
 	Data data = data_serialize(&msg);
 	stream << ",data=" << data;
-//	data.release();
+	data.release();
 	stream << ")";
 	return stream;
Index: /source/ariba/utility/serialization/Data.hpp
===================================================================
--- /source/ariba/utility/serialization/Data.hpp	(revision 8609)
+++ /source/ariba/utility/serialization/Data.hpp	(revision 8620)
@@ -396,12 +396,20 @@
 		size_t res_length = calcLength(new_length);
 		if (old_length != res_length) {
-			T* new_buffer = new T[res_length];
-			if (bufferPtr != NULL) {
-				size_t clength = res_length < old_length ? res_length : old_length;
-				memcpy( new_buffer, bufferPtr, clength*sizeof(T) );
-				delete [] bufferPtr;
+
+			if(res_length <= 0){
+				if (bufferPtr != NULL) delete [] bufferPtr;
+				bufferPtr = NULL;
+				bufferLen = 0;
+			}else{
+				T* new_buffer = new T[res_length];
+				if (new_buffer != NULL) memset(new_buffer, 0, res_length*sizeof(T));
+				if (bufferPtr != NULL) {
+					size_t clength = res_length < old_length ? res_length : old_length;
+					memcpy( new_buffer, bufferPtr, clength*sizeof(T) );
+					delete [] bufferPtr;
+				}
+				bufferPtr = new_buffer;
+				bufferLen = new_length;
 			}
-			bufferPtr = new_buffer;
-			bufferLen = new_length;
 		}
 	}
