summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2012-10-08 17:29:09 +0200
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2013-01-25 18:29:40 +0100
commit5d8d8e8441a73728406ced22535646f014e4c17e (patch)
tree2659397a9f2a56b5d548576b73253d2b0b7cd3a4
parent1ebcc767a98e3bd28a9e92734c4d5c8ce6829d96 (diff)
downloadlasso-5d8d8e8441a73728406ced22535646f014e4c17e.tar.gz
lasso-5d8d8e8441a73728406ced22535646f014e4c17e.tar.xz
lasso-5d8d8e8441a73728406ced22535646f014e4c17e.zip
fix potential segfault in lasso_node_impl_init_from_xml
-rw-r--r--lasso/xml/xml.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 4fe7a575..ec441843 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -1461,14 +1461,16 @@ lasso_node_impl_init_from_xml(LassoNode *node, xmlNode *xmlnode)
if (attr->ns && lasso_strisequal((char*)attr->name, "type") &&
lasso_strisequal((char*)attr->ns->href, LASSO_XSI_HREF)) {
char *colon = strchr((char*)content, ':');
- xmlNs *ns;
- *colon = '\0';
- ns = xmlSearchNs(NULL, xmlnode, content);
- *colon = ':';
- if (ns && lasso_strisequal((char*)ns->href, (char*)node_class->node_data->ns->href)
- && lasso_strisequal(&colon[1], node_class->node_data->node_name)) {
- lasso_release_xml_string(content);
- continue;
+ if (colon) {
+ xmlNs *ns;
+ *colon = '\0';
+ ns = xmlSearchNs(NULL, xmlnode, content);
+ *colon = ':';
+ if (ns && lasso_strisequal((char*)ns->href, (char*)node_class->node_data->ns->href)
+ && lasso_strisequal(&colon[1], node_class->node_data->node_name)) {
+ lasso_release_xml_string(content);
+ continue;
+ }
}
}