add: *(buf+fix_len) = ':'; fix_len++;
context: static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len){	static char buf[MAX_WARNING_LEN];	static unsigned int fix_len=0;	str *foo;	int print_len, l;	int clen;	char* t;#define str_pair_print(string, string2, string2_len) \		do{ \			l=strlen((string)); \		if ((clen+(string2_len)+l)>MAX_WARNING_LEN) \			goto error_overflow; \		memcpy(buf+clen, (string), l); \		clen+=l; \		memcpy(buf+clen, (string2), (string2_len)); \		clen+=(string2_len); }while(0)				#define str_int_print(string, intval)\		do{\			t=int2str((intval), &print_len); \			str_pair_print(string, t, print_len);\		} while(0)		#define str_ipaddr_print(string, ipaddr_val)\		do{\			t=ip_addr2a((ipaddr_val)); \			print_len=strlen(t); \			str_pair_print(string, t, print_len);\		} while(0)		if (!fix_len)	{		memcpy(buf+fix_len,WARNING, WARNING_LEN);		fix_len +=WARNING_LEN;		memcpy(buf+fix_len, bind_address->name.s,bind_address->name.len);		fix_len += bind_address->name.len;		//*(buf+fix_len++) = ':';		memcpy(buf+fix_len,bind_address->port_no_str.s,			bind_address->port_no_str.len);		fix_len += bind_address->port_no_str.len;		memcpy(buf+fix_len, WARNING_PHRASE,WARNING_PHRASE_LEN);		fix_len += WARNING_PHRASE_LEN;	}		/*adding out_uri*/	if (msg->new_uri.s)		foo=&(msg->new_uri);	else		foo=&(msg->first_line.u.request.uri);		clen=fix_len;				/* pid= */		str_int_print("pid=", my_pid());		/* req_src_ip= */		str_ipaddr_print(" req_src_ip=", &msg->rcv.src_ip);		str_int_print(" req_src_port=", ntohs(msg->rcv.src_port));		str_pair_print(" in_uri=", msg->first_line.u.request.uri.s,									msg->first_line.u.request.uri.len);		str_pair_print(" out_uri=", foo->s, foo->len);		str_pair_print(" via_cnt", msg->parsed_flag & HDR_EOH ? "=" : ">", 1);		str_int_print("=", via_cnt);		if (clen<MAX_WARNING_LEN){ buf[clen]='"'; clen++; }		else goto error_overflow;						*returned_len=clen;		return buf;error_overflow:		LOG(L_ERR, "ERROR: warning_builder: buffer size exceeded\n");		*returned_len=0;		return 0;}