aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authorqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-04 20:06:02 +0000
committerqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-04 20:06:02 +0000
commitf3039158d85599fe4d337c1b7b0a20619db5a75f (patch)
tree4d3a3925ada037474dfd0e839b06f00ed69047e7 /res
parentbac4677f3c3f56ff1fc8296a547413bbc854d45a (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
Diffstat (limited to 'res')
-rw-r--r--res/res_jabber.c16
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;