diff options
author | Richard Hughes <richard@hughsie.com> | 2015-08-27 15:01:21 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-08-27 15:01:21 +0100 |
commit | 6e8937c41ed62c0ea7bed0f5ec69df62d5031e8b (patch) | |
tree | 8b22241f4e9bead7e6ee2ce831fdbadb1c124a7b | |
parent | 05e9cbbb38dbda4e59fcaafc7358781197523b2b (diff) | |
download | appstream-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.c | 14 | ||||
-rw-r--r-- | libappstream-glib/as-store.c | 5 |
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, |