diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-05-29 04:09:51 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-05-29 04:09:51 +0000 |
commit | 2618733248d984c629eeb313c80e084dd26531c6 (patch) | |
tree | c4a828d6fb9fbd20f0e3d746da2ffd589ff2c901 | |
parent | 612fce9c649b58250e7f240558095b15f7295f6b (diff) |
Fixed ticket #307: Fail to parse fully qualified PIDF document (thanks Cool_Zer0)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1313 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjsip/src/pjsip-simple/pidf.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/pjsip/src/pjsip-simple/pidf.c b/pjsip/src/pjsip-simple/pidf.c index 730194c2..922549d9 100644 --- a/pjsip/src/pjsip-simple/pidf.c +++ b/pjsip/src/pjsip-simple/pidf.c @@ -343,11 +343,16 @@ PJ_DEF(pjpidf_pres*) pjpidf_create(pj_pool_t *pool, const pj_str_t *entity) PJ_DEF(pjpidf_pres*) pjpidf_parse(pj_pool_t *pool, char *text, int len) { pjpidf_pres *pres = pj_xml_parse(pool, text, len); - if (pres) { - if (pj_stricmp(&pres->name, &PRESENCE) != 0) - return NULL; + if (pres && pres->name.slen >= 8) { + pj_str_t name; + + name.ptr = pres->name.ptr + (pres->name.slen - 8); + name.slen = 8; + + if (pj_stricmp(&name, &PRESENCE) == 0) + return pres; } - return pres; + return NULL; } PJ_DEF(int) pjpidf_print(const pjpidf_pres* pres, char *buf, int len) |