diff options
author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-12 00:00:18 +0000 |
---|---|---|
committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-12 00:00:18 +0000 |
commit | 9a3ac1bedf0738db0aac5f8b9d9cd06e4464cdf3 (patch) | |
tree | 69ae4d8dbad0a644370e56a7ab2b82cf02667501 /lasso/Attic | |
parent | 52731a4e5a73cce6318bf56e0f4da78cd150754d (diff) | |
download | lasso-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.c | 31 |
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); } |