Index: source/ariba/communication/BaseCommunication.cpp
===================================================================
--- source/ariba/communication/BaseCommunication.cpp	(revision 4483)
+++ source/ariba/communication/BaseCommunication.cpp	(revision 4582)
@@ -188,5 +188,9 @@
 
 	// create link identifier and link descriptor
-	if (linkid.isUnspecified()) linkid = LinkID::create();
+	if (linkid.isUnspecified()){
+		linkid = LinkID::create();
+		assert(!linkid.isUnspecified());
+	}
+
 	logging_debug( "creating new local descriptor entry with local link id " << linkid.toString() );
 	LinkDescriptor linkDescriptor( linkid, local, LinkID::UNSPECIFIED, remote, descriptor, false );
@@ -199,8 +203,11 @@
 
 	logging_debug( "sending out base messages with request to open link to " << remote->toString() );
-	AribaBaseMsg baseMsg( remote, AribaBaseMsg::LINK_STATE_OPEN_REQUEST, linkid,
-								LinkID::UNSPECIFIED );
+	AribaBaseMsg baseMsg(
+			remote,
+			AribaBaseMsg::LINK_STATE_OPEN_REQUEST,
+			linkid,
+			LinkID::UNSPECIFIED );
+
 	transport->sendMessage(&baseMsg);
-
 	return linkid;
 }
@@ -360,4 +367,13 @@
 		LinkID remoteLink = spovmsg->getLocalLink();
 
+		if(localLink.isUnspecified()){
+			logging_error("local link is unspecified");
+			return false;
+		}
+
+		if(remoteLink.isUnspecified()){
+			logging_error("remote link is unspecified");
+			return false;
+		}
 
 		const NetworkLocator* localLocator  = dynamic_cast<const NetworkLocator*>(localDescriptor.locator);
Index: source/ariba/communication/BaseCommunication.h
===================================================================
--- source/ariba/communication/BaseCommunication.h	(revision 4483)
+++ source/ariba/communication/BaseCommunication.h	(revision 4582)
@@ -228,7 +228,7 @@
 
 		LinkDescriptor() :
-			localLink(),
+			localLink(LinkID::UNSPECIFIED),
 			localLocator(NULL),
-			remoteLink(),
+			remoteLink(LinkID::UNSPECIFIED),
 			remoteLocator(NULL),
 			remoteEndpoint(EndpointDescriptor::UNSPECIFIED),
Index: source/ariba/communication/messages/AribaBaseMsg.cpp
===================================================================
--- source/ariba/communication/messages/AribaBaseMsg.cpp	(revision 4483)
+++ source/ariba/communication/messages/AribaBaseMsg.cpp	(revision 4582)
@@ -74,10 +74,10 @@
 
 	switch( getType() ){
-		case LINK_STATE_DATA: 		return "LINK_STATE_DATA";
+		case LINK_STATE_DATA: 			return "LINK_STATE_DATA";
 		case LINK_STATE_OPEN_REQUEST: 	return "LINK_STATE_OPEN_REQUEST";
 		case LINK_STATE_OPEN_REPLY: 	return "LINK_STATE_OPEN_REPLY";
 		case LINK_STATE_CLOSE_REQUEST: 	return "LINK_STATE_CLOSE_REQUEST";
-		case LINK_STATE_UPDATE:		return "LINK_STATE_UPDATE";
-		default:			"unknown";
+		case LINK_STATE_UPDATE:			return "LINK_STATE_UPDATE";
+		default:						"unknown";
 	}
 
Index: source/ariba/communication/messages/AribaBaseMsg.h
===================================================================
--- source/ariba/communication/messages/AribaBaseMsg.h	(revision 4483)
+++ source/ariba/communication/messages/AribaBaseMsg.h	(revision 4582)
@@ -71,5 +71,6 @@
 	} LINK_STATE;
 
-	AribaBaseMsg(	const Address* address    = NULL,
+	AribaBaseMsg(
+			const Address* address    = NULL,
 			LINK_STATE _state         = LINK_STATE_DATA,
 			const LinkID& _localLink  = LinkID::UNSPECIFIED,
Index: source/ariba/utility/types/Identifier.h
===================================================================
--- source/ariba/utility/types/Identifier.h	(revision 4483)
+++ source/ariba/utility/types/Identifier.h	(revision 4582)
@@ -575,4 +575,8 @@
 	X && unspec && len;
 
+	if (X.isDeserializer()){
+		assert(len == array_size*sizeof(mp_limb_t));
+	}
+
 	// serialize the identifier
 	for (int i=array_size-1; i>=0; i--) X && key[i];
