diff options
author | Mark Michelson <mmichelson@digium.com> | 2013-08-29 22:54:05 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2013-08-29 22:54:05 +0000 |
commit | b5f61b560894bb632665828ce1809cd873446433 (patch) | |
tree | f4b3afe52a1e39cd91d158cbd66152f91a55dedd /res | |
parent | d7b9a702d8c3705bf6c736d2df166f51981fc006 (diff) |
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
Diffstat (limited to 'res')
-rw-r--r-- | res/res_pjsip_pidf.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/res/res_pjsip_pidf.c b/res/res_pjsip_pidf.c index 1891e54cb..45dcb7757 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); |