summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-08-27 15:01:21 +0100
committerRichard Hughes <richard@hughsie.com>2015-08-27 15:01:21 +0100
commit6e8937c41ed62c0ea7bed0f5ec69df62d5031e8b (patch)
tree8b22241f4e9bead7e6ee2ce831fdbadb1c124a7b
parent05e9cbbb38dbda4e59fcaafc7358781197523b2b (diff)
downloadappstream-glib-6e8937c41ed62c0ea7bed0f5ec69df62d5031e8b.tar.gz
Ignore empty AppStream XML files
Fixes: https://github.com/hughsie/appstream-glib/issues/60
-rw-r--r--libappstream-glib/as-self-test.c14
-rw-r--r--libappstream-glib/as-store.c5
2 files changed, 19 insertions, 0 deletions
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index b28a927..2e7e32c 100644
--- a/libappstream-glib/as-self-test.c
+++ b/libappstream-glib/as-self-test.c
@@ -2836,6 +2836,19 @@ as_test_store_merges_local_func (void)
}
static void
+as_test_store_empty_func (void)
+{
+ gboolean ret;
+ _cleanup_error_free_ GError *error = NULL;
+ _cleanup_object_unref_ AsStore *store = NULL;
+
+ store = as_store_new ();
+ ret = as_store_from_xml (store, "", NULL, &error);
+ g_assert_no_error (error);
+ g_assert (ret);
+}
+
+static void
as_test_store_func (void)
{
AsApp *app;
@@ -4252,6 +4265,7 @@ main (int argc, char **argv)
}
g_test_add_func ("/AppStream/yaml", as_test_yaml_func);
g_test_add_func ("/AppStream/store", as_test_store_func);
+ g_test_add_func ("/AppStream/store{empty}", as_test_store_empty_func);
if (g_test_slow ()) {
g_test_add_func ("/AppStream/store{auto-reload-dir}", as_test_store_auto_reload_dir_func);
g_test_add_func ("/AppStream/store{auto-reload-file}", as_test_store_auto_reload_file_func);
diff --git a/libappstream-glib/as-store.c b/libappstream-glib/as-store.c
index b2d7f91..56d969a 100644
--- a/libappstream-glib/as-store.c
+++ b/libappstream-glib/as-store.c
@@ -1208,6 +1208,11 @@ as_store_from_xml (AsStore *store,
_cleanup_node_unref_ GNode *root = NULL;
g_return_val_if_fail (AS_IS_STORE (store), FALSE);
+ g_return_val_if_fail (data != NULL, FALSE);
+
+ /* ignore empty file */
+ if (data[0] == '\0')
+ return TRUE;
root = as_node_from_xml (data,
AS_NODE_FROM_XML_FLAG_LITERAL_TEXT,