From b5f61b560894bb632665828ce1809cd873446433 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 29 Aug 2013 22:54:05 +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. ........ Merged revisions 397960 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397962 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);