summaryrefslogtreecommitdiffstats
path: root/lasso/Attic
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-08-12 00:00:18 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-08-12 00:00:18 +0000
commit9a3ac1bedf0738db0aac5f8b9d9cd06e4464cdf3 (patch)
tree69ae4d8dbad0a644370e56a7ab2b82cf02667501 /lasso/Attic
parent52731a4e5a73cce6318bf56e0f4da78cd150754d (diff)
downloadlasso-9a3ac1bedf0738db0aac5f8b9d9cd06e4464cdf3.tar.gz
lasso-9a3ac1bedf0738db0aac5f8b9d9cd06e4464cdf3.tar.xz
lasso-9a3ac1bedf0738db0aac5f8b9d9cd06e4464cdf3.zip
Added tests for errors reporting and to avoid some malicious segfaults
Diffstat (limited to 'lasso/Attic')
-rw-r--r--lasso/Attic/protocols/provider.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/lasso/Attic/protocols/provider.c b/lasso/Attic/protocols/provider.c
index ef6fecca..2f912470 100644
--- a/lasso/Attic/protocols/provider.c
+++ b/lasso/Attic/protocols/provider.c
@@ -584,9 +584,11 @@ lasso_provider_new(gchar *metadata,
LassoProvider *provider;
provider = lasso_provider_new_metadata_filename(metadata);
- provider->public_key = g_strdup(public_key);
- provider->ca_certificate = g_strdup(ca_certificate);
-
+ if (provider != NULL) {
+ provider->public_key = g_strdup(public_key);
+ provider->ca_certificate = g_strdup(ca_certificate);
+ }
+
return(provider);
}
@@ -605,19 +607,24 @@ lasso_provider_new_from_metadata_node(LassoNode *metadata_node)
LassoProvider*
lasso_provider_new_metadata_filename(gchar *metadata_filename)
{
- LassoProvider *provider;
+ LassoProvider *provider = NULL;
xmlDocPtr doc;
xmlNodePtr root;
- provider = LASSO_PROVIDER(g_object_new(LASSO_TYPE_PROVIDER, NULL));
-
- /* get root element of doc and duplicate it */
doc = xmlParseFile(metadata_filename);
- root = xmlCopyNode(xmlDocGetRootElement(doc), 1);
- xmlFreeDoc(doc);
- provider->metadata = lasso_node_new();
- LASSO_NODE_GET_CLASS(provider->metadata)->set_xmlNode(provider->metadata, root);
- /*provider->metadata = lasso_node_new_from_xmlNode(root); */
+ if (doc != NULL) {
+ /* get root element of doc and duplicate it */
+ root = xmlCopyNode(xmlDocGetRootElement(doc), 1);
+ xmlFreeDoc(doc);
+
+ provider = LASSO_PROVIDER(g_object_new(LASSO_TYPE_PROVIDER, NULL));
+ provider->metadata = lasso_node_new();
+ LASSO_NODE_GET_CLASS(provider->metadata)->set_xmlNode(provider->metadata, root);
+ }
+ else {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Failed to build LassoProvider: invalid metadata file.\n");
+ }
return(provider);
}