diff options
author | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-04 20:06:02 +0000 |
---|---|---|
committer | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-04 20:06:02 +0000 |
commit | f3039158d85599fe4d337c1b7b0a20619db5a75f (patch) | |
tree | 4d3a3925ada037474dfd0e839b06f00ed69047e7 | |
parent | bac4677f3c3f56ff1fc8296a547413bbc854d45a (diff) |
Merged revisions 63099 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r63099 | qwell | 2007-05-04 15:03:49 -0500 (Fri, 04 May 2007) | 4 lines
Fix a crash when checking version attribute in an incoming XML caps element.
Issue 9667, patch by phsultan.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@63104 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | res/res_jabber.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/res/res_jabber.c b/res/res_jabber.c index 4625990eb..e1c9a8522 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -160,7 +160,7 @@ static char *ajistatus_descrip = struct aji_client_container clients; -struct aji_capabilities *capabilities; +struct aji_capabilities *capabilities = NULL; /*! \brief Global flags, initialized to default values */ static struct ast_flags globalflags = { AJI_AUTOPRUNE | AJI_AUTOREGISTER }; @@ -207,6 +207,15 @@ static void aji_buddy_destroy(struct aji_buddy *obj) free(obj); } +/*! + * \brief Find version in XML stream and populate our capabilities list + * \param node the node attribute in the caps element we'll look for or add to + * our list + * \param version the version attribute in the caps element we'll look for or + * add to our list + * \param pak the XML stanza we're processing + * \return a pointer to the added or found aji_version structure + */ static struct aji_version *aji_find_version(char *node, char *version, ikspak *pak) { struct aji_capabilities *list = NULL; @@ -226,6 +235,8 @@ static struct aji_version *aji_find_version(char *node, char *version, ikspak *p return res; res = res->next; } + /* Specified version not found. Let's add it to + this node in our capabilities list */ if(!res) { res = (struct aji_version *)malloc(sizeof(struct aji_version)); if(!res) { @@ -242,6 +253,7 @@ static struct aji_version *aji_find_version(char *node, char *version, ikspak *p } list = list->next; } + /* Specified node not found. Let's add it our capabilities list */ if(!list) { list = (struct aji_capabilities *)malloc(sizeof(struct aji_capabilities)); if(!list) { @@ -257,7 +269,7 @@ static struct aji_version *aji_find_version(char *node, char *version, ikspak *p ast_copy_string(res->version, version, sizeof(res->version)); res->jingle = 0; res->parent = list; - res->next = list->versions; + res->next = NULL; list->versions = res; list->next = capabilities; capabilities = list; |