SMPP: Fix Memory leaks

Whenever we call build_tlv() we must
call destroy_tlv() after we are finished with it.

Similarly, smpp34_unpack() makes calls to smpp34_malloc()
and these need to be free'd by us later.

Change-Id: Ic2abcbe78cf7cf7b6ce36fe09aa9b4f8daee973f
diff --git a/src/libsmpputil/smpp_msc.c b/src/libsmpputil/smpp_msc.c
index fed5858..cf17540 100644
--- a/src/libsmpputil/smpp_msc.c
+++ b/src/libsmpputil/smpp_msc.c
@@ -788,6 +788,7 @@
 		       sms->msg_ref);
 
 	ret = smpp_tx_deliver(esme, &deliver);
+	destroy_tlv(deliver.tlv);
 	if (ret < 0)
 		return ret;
 
diff --git a/src/libsmpputil/smpp_smsc.c b/src/libsmpputil/smpp_smsc.c
index 314dc60..34e24c5 100644
--- a/src/libsmpputil/smpp_smsc.c
+++ b/src/libsmpputil/smpp_smsc.c
@@ -694,6 +694,7 @@
 
 	if (!(esme->bind_flags & ESME_BIND_TX)) {
 		submit_r.command_status = ESME_RINVBNDSTS;
+		destroy_tlv(submit.tlv);
 		return PACK_AND_SEND(esme->esme, &submit_r);
 	}
 
@@ -703,6 +704,7 @@
 	INIT_RESP(SUBMIT_SM_RESP, &submit_r, &submit);
 
 	rc = handle_smpp_submit(esme, &submit, &submit_r);
+	destroy_tlv(submit.tlv);
 	if (rc == 0)
 		return PACK_AND_SEND(esme->esme, &submit_r);