--- gateway/gw/smsc/smsc_smpp.c	2002-08-08 20:44:38.000000000 +0300
+++ gateway/gw/smsc/smsc_smpp.c	2002-08-11 16:09:55.000000000 +0300
@@ -264,8 +270,8 @@
     pdu = smpp_pdu_create(submit_sm,  
     	    	    	  counter_increase(smpp->message_id_counter)); 
     	    	    
-    pdu->u.submit_sm.source_addr = octstr_duplicate(msg->sms.sender); 
-    pdu->u.submit_sm.destination_addr = octstr_duplicate(msg->sms.receiver); 
+    pdu->u.submit_sm.source_addr = octstr_copy(msg->sms.sender,0,SMPP_MAX_ADDR_LEN); 
+    pdu->u.submit_sm.destination_addr = octstr_copy(msg->sms.receiver,0,SMPP_MAX_ADDR_LEN); 
   
     /* Check for manual override of source ton and npi values */ 
     if(smpp->source_addr_ton > -1 && smpp->source_addr_npi > -1) { 
--- gateway/gw/smsc/smpp_pdu.h	2002-08-09 13:55:47.000000000 +0300
+++ gateway/gw/smsc/smpp_pdu.h	2002-08-11 16:08:43.000000000 +0300
@@ -11,6 +11,8 @@
 
 #include "gwlib/gwlib.h"
 
+#define SMPP_MAX_ADDR_LEN 20
+
 
 enum {
     #define INTEGER(name, octets)
--- gateway/gw/smsc/smpp_pdu.def	2002-08-09 13:55:47.000000000 +0300
+++ gateway/gw/smsc/smpp_pdu.def	2002-08-11 16:09:30.000000000 +0300
@@ -117,10 +117,10 @@
     NULTERMINATED(service_type, 6)
     INTEGER(source_addr_ton, 1)
     INTEGER(source_addr_npi, 1)
-    NULTERMINATED(source_addr, 21)
+    NULTERMINATED(source_addr, (SMPP_MAX_ADDR_LEN+1))
     INTEGER(dest_addr_ton, 1)
     INTEGER(dest_addr_npi, 1)
-    NULTERMINATED(destination_addr, 21)
+    NULTERMINATED(destination_addr, (SMPP_MAX_ADDR_LEN+1))
     INTEGER(esm_class, 1)
     INTEGER(protocol_id, 1)
     INTEGER(priority_flag, 1)
@@ -146,10 +146,10 @@
     NULTERMINATED(service_type, 6)
     INTEGER(source_addr_ton, 1)
     INTEGER(source_addr_npi, 1)
-    NULTERMINATED(source_addr, 21)
+    NULTERMINATED(source_addr, (SMPP_MAX_ADDR_LEN+1))
     INTEGER(dest_addr_ton, 1)
     INTEGER(dest_addr_npi, 1)
-    NULTERMINATED(destination_addr, 21)
+    NULTERMINATED(destination_addr, (SMPP_MAX_ADDR_LEN+1))
     INTEGER(esm_class, 1)
     INTEGER(protocol_id, 1)
     INTEGER(priority_flag, 1)
