From d0760c312b391684812ff3d5ce81b2be83fbc88c Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 29 Aug 2013 22:53:17 +0000 Subject: [PATCH] Fix method for creating activities string in PIDF bodies. The previous method did not allocate enough space to create the entire string, but adjusted the string's slen value to be larger than the actual allocation. This resulted in garbled text in NOTIFY requests from Asterisk. This method allocates the proper amount of space first and then writes the content into the buffer. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@397960 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_pjsip_pidf.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/res/res_pjsip_pidf.c b/res/res_pjsip_pidf.c index 1891e54cb0..45dcb7757e 100644 --- a/res/res_pjsip_pidf.c +++ b/res/res_pjsip_pidf.c @@ -159,8 +159,11 @@ static void add_non_standard(pj_pool_t *pool, pj_xml_node *node, const char *pid if (pidfstate[0] != '-') { pj_xml_node *activities = create_node(pool, status, "ep:activities"); - pj_strdup2(pool, &activities->content, "ep:"); - pj_strcat2(&activities->content, pidfstate); + size_t str_size = sizeof("ep:") + strlen(pidfstate); + + activities->content.ptr = pj_pool_alloc(pool, str_size); + activities->content.slen = pj_ansi_snprintf(activities->content.ptr, str_size, + "ep:%s", pidfstate); } create_attr(pool, node, XMLNS_PP, XMLNS_PERSON);