diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2012-10-08 17:29:09 +0200 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2013-01-25 18:29:40 +0100 |
commit | 5d8d8e8441a73728406ced22535646f014e4c17e (patch) | |
tree | 2659397a9f2a56b5d548576b73253d2b0b7cd3a4 | |
parent | 1ebcc767a98e3bd28a9e92734c4d5c8ce6829d96 (diff) | |
download | lasso-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.c | 18 |
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; + } } } |