Another take at fixing 64bit problems. PJ_MAX_OBJ_NAME is increased to 32 chars (from 16), and check all those sprintf's especially the ones with "%p" format.



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@635 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c
index c84cfd2..cc68ab1 100644
--- a/pjsip/src/pjsip/sip_dialog.c
+++ b/pjsip/src/pjsip/sip_dialog.c
@@ -73,7 +73,7 @@
     PJ_ASSERT_RETURN(dlg != NULL, PJ_ENOMEM);
 
     dlg->pool = pool;
-    pj_ansi_sprintf(dlg->obj_name, "dlg%p", dlg);
+    pj_ansi_snprintf(dlg->obj_name, sizeof(dlg->obj_name), "dlg%p", dlg);
     dlg->ua = ua;
     dlg->endpt = endpt;
     dlg->state = PJSIP_DIALOG_STATE_NULL;
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index acf9188..b7a23eb 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -892,7 +892,8 @@
     tsx->tsx_user = tsx_user;
     tsx->endpt = mod_tsx_layer.endpt;
 
-    pj_ansi_sprintf(tsx->obj_name, "tsx%p", tsx);
+    pj_ansi_snprintf(tsx->obj_name, sizeof(tsx->obj_name), 
+		     "tsx%p", tsx);
 
     tsx->handle_200resp = 1;
     tsx->retransmit_timer.id = TSX_TIMER_RETRANSMISSION;
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c
index ebd8025..e18a904 100644
--- a/pjsip/src/pjsip/sip_transport.c
+++ b/pjsip/src/pjsip/sip_transport.c
@@ -373,7 +373,7 @@
 
 PJ_DEF(char*) pjsip_rx_data_get_info(pjsip_rx_data *rdata)
 {
-    char obj_name[16];
+    char obj_name[PJ_MAX_OBJ_NAME];
 
     PJ_ASSERT_RETURN(rdata->msg_info.msg, "INVALID MSG");
 
@@ -381,7 +381,7 @@
 	return rdata->msg_info.info;
 
     pj_ansi_strcpy(obj_name, "rdata");
-    pj_ansi_sprintf(obj_name+5, "%p", rdata);
+    pj_ansi_snprintf(obj_name+5, sizeof(obj_name)-5, "%p", rdata);
 
     rdata->msg_info.info = get_msg_info(rdata->tp_info.pool, obj_name,
 					rdata->msg_info.msg);
diff --git a/pjsip/src/pjsip/sip_transport_loop.c b/pjsip/src/pjsip/sip_transport_loop.c
index 3dc1920..c81d7152 100644
--- a/pjsip/src/pjsip/sip_transport_loop.c
+++ b/pjsip/src/pjsip/sip_transport_loop.c
@@ -359,7 +359,8 @@
     loop = pj_pool_zalloc(pool, sizeof(struct loop_transport));
     
     /* Initialize transport properties. */
-    pj_ansi_sprintf(loop->base.obj_name, "loop%p", loop);
+    pj_ansi_snprintf(loop->base.obj_name, sizeof(loop->base.obj_name), 
+		     "loop%p", loop);
     loop->base.pool = pool;
     status = pj_atomic_create(pool, 0, &loop->base.ref_cnt);
     if (status != PJ_SUCCESS)
diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c
index c9b92ad..2adfa18 100644
--- a/pjsip/src/pjsip/sip_transport_tcp.c
+++ b/pjsip/src/pjsip/sip_transport_tcp.c
@@ -167,8 +167,9 @@
 				   pjsip_host_port *host_port,
 				   const pj_sockaddr_in *addr )
 {
-    host_port->host.ptr = pj_pool_alloc(pool, 48);
-    host_port->host.slen = pj_ansi_sprintf( host_port->host.ptr, "%s", 
+    enum { M = 48 };
+    host_port->host.ptr = pj_pool_alloc(pool, M);
+    host_port->host.slen = pj_ansi_snprintf( host_port->host.ptr, M, "%s", 
 					    pj_inet_ntoa(addr->sin_addr));
     host_port->port = pj_ntohs(addr->sin_port);
 }
@@ -259,8 +260,8 @@
 	listener_addr->sin_addr = *(pj_in_addr*)he.h_addr;
     }
 
-    pj_ansi_sprintf(listener->obj_name, "tcp:%d", 
-		     (int)pj_ntohs(listener_addr->sin_port));
+    pj_ansi_snprintf(listener->obj_name, sizeof(listener->obj_name), 
+		     "tcp:%d",  (int)pj_ntohs(listener_addr->sin_port));
 
     /* Save the address name */
     sockaddr_to_host_port(listener->factory.pool, 
diff --git a/pjsip/src/pjsip/sip_transport_udp.c b/pjsip/src/pjsip/sip_transport_udp.c
index d0c6c30..027a6df 100644
--- a/pjsip/src/pjsip/sip_transport_udp.c
+++ b/pjsip/src/pjsip/sip_transport_udp.c
@@ -403,6 +403,7 @@
 						unsigned async_cnt,
 						pjsip_transport **p_transport)
 {
+    enum { M = 80 };
     pj_pool_t *pool;
     struct udp_transport *tp;
     pj_ioqueue_t *ioqueue;
@@ -450,7 +451,8 @@
     tp->base.pool = pool;
 
     /* Object name. */
-    pj_ansi_sprintf(tp->base.obj_name, "udp%p", tp);
+    pj_ansi_snprintf(tp->base.obj_name, sizeof(tp->base.obj_name), 
+		     "udp%p", tp);
 
     /* Init reference counter. */
     status = pj_atomic_create(pool, 0, &tp->base.ref_cnt);
@@ -493,9 +495,9 @@
     tp->base.remote_name.port = 0;
 
     /* Transport info. */
-    tp->base.info = pj_pool_alloc(pool, 80);
-    pj_ansi_sprintf( 
-	tp->base.info, "udp %s:%d [published as %s:%d]",
+    tp->base.info = pj_pool_alloc(pool, M);
+    pj_ansi_snprintf( 
+	tp->base.info, M, "udp %s:%d [published as %s:%d]",
 	pj_inet_ntoa(((pj_sockaddr_in*)&tp->base.local_addr)->sin_addr),
 	pj_ntohs(((pj_sockaddr_in*)&tp->base.local_addr)->sin_port),
 	tp->base.local_name.host.ptr,
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 1d5873b..05815ed 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -289,7 +289,7 @@
 {
     pjsua_acc_config cfg;
     struct transport_data *t = &pjsua_var.tpdata[tid];
-    char uri[62];
+    char uri[PJSIP_MAX_URL_SIZE];
 
     /* ID must be valid */
     PJ_ASSERT_RETURN(tid>=0 && tid<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
@@ -300,11 +300,12 @@
     pjsua_acc_config_default(&cfg);
 
     /* Build URI for the account */
-    pj_ansi_sprintf(uri, "<sip:%.*s:%d;transport=%s>", 
-			 (int)t->local_name.host.slen,
-			 t->local_name.host.ptr,
-			 t->local_name.port,
-			 pjsip_transport_get_type_name(t->type));
+    pj_ansi_snprintf(uri, PJSIP_MAX_URL_SIZE,
+		     "<sip:%.*s:%d;transport=%s>", 
+		     (int)t->local_name.host.slen,
+		     t->local_name.host.ptr,
+		     t->local_name.port,
+		     pjsip_transport_get_type_name(t->type));
 
     cfg.id = pj_str(uri);
     
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index e9042670..d5b021f 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1275,8 +1275,8 @@
 	const char *rem_addr;
 	int rem_port;
 	const char *dir;
-	char last_update[40];
-	char packets[16], bytes[16], ipbytes[16];
+	char last_update[64];
+	char packets[32], bytes[32], ipbytes[32];
 	pj_time_val now;
 
 	pjmedia_session_get_stream_stat(session, i, &stat);
diff --git a/pjsip/src/test-pjsip/transport_tcp_test.c b/pjsip/src/test-pjsip/transport_tcp_test.c
index c3578ee..630bd18 100644
--- a/pjsip/src/test-pjsip/transport_tcp_test.c
+++ b/pjsip/src/test-pjsip/transport_tcp_test.c
@@ -34,7 +34,7 @@
     pjsip_transport *tcp;
     pj_sockaddr_in rem_addr;
     pj_status_t status;
-    char url[64];
+    char url[PJSIP_MAX_URL_SIZE];
     int rtt[SEND_RECV_LOOP], min_rtt;
     int i, pkt_lost;
 
diff --git a/pjsip/src/test-pjsip/tsx_basic_test.c b/pjsip/src/test-pjsip/tsx_basic_test.c
index afe7227..54f64cd 100644
--- a/pjsip/src/test-pjsip/tsx_basic_test.c
+++ b/pjsip/src/test-pjsip/tsx_basic_test.c
@@ -23,8 +23,8 @@
 
 #define THIS_FILE   "tsx_basic_test.c"
 
-static char TARGET_URI[128];
-static char FROM_URI[128];
+static char TARGET_URI[PJSIP_MAX_URL_SIZE];
+static char FROM_URI[PJSIP_MAX_URL_SIZE];
 
 
 /* Test transaction layer. */