[Libosinfo] [libosinfo PATCH 2/3] media, image, tree: Avoid critical errors when getting the os variants
Fabiano Fidêncio
fidencio at redhat.com
Fri Apr 12 08:19:53 UTC 2019
When getting the os variant of media, image, or tree, let's ensure their
OS is not NULL* before calling osinfo_os_get_variant_list(). In case
it's NULL, let's just return NULL.
*: having a media, image, or tree with no OS set is a common case when
the user has been creating it manually.
https://gitlab.com/libosinfo/libosinfo/issues/25
Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
osinfo/osinfo_image.c | 4 ++++
osinfo/osinfo_media.c | 4 ++++
osinfo/osinfo_tree.c | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/osinfo/osinfo_image.c b/osinfo/osinfo_image.c
index fcde244..621ebf0 100644
--- a/osinfo/osinfo_image.c
+++ b/osinfo/osinfo_image.c
@@ -326,7 +326,11 @@ OsinfoOsVariantList *osinfo_image_get_os_variants(OsinfoImage *image)
OsinfoFilter *filter;
g_return_val_if_fail(OSINFO_IS_IMAGE(image), NULL);
+
os = osinfo_image_get_os(image);
+ if (os == NULL)
+ return NULL;
+
os_variants = osinfo_os_get_variant_list(os);
g_object_unref(os);
diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
index 4f86c2b..b1c14dd 100644
--- a/osinfo/osinfo_media.c
+++ b/osinfo/osinfo_media.c
@@ -1555,6 +1555,10 @@ OsinfoOsVariantList *osinfo_media_get_os_variants(OsinfoMedia *media)
OsinfoFilter *filter;
g_return_val_if_fail(OSINFO_IS_MEDIA(media), NULL);
+
+ if (media->priv->os == NULL)
+ return NULL;
+
os = g_weak_ref_get(&media->priv->os);
os_variants = osinfo_os_get_variant_list(os);
g_object_unref(os);
diff --git a/osinfo/osinfo_tree.c b/osinfo/osinfo_tree.c
index 119216a..88a2d6e 100644
--- a/osinfo/osinfo_tree.c
+++ b/osinfo/osinfo_tree.c
@@ -978,7 +978,11 @@ OsinfoOsVariantList *osinfo_tree_get_os_variants(OsinfoTree *tree)
OsinfoFilter *filter;
g_return_val_if_fail(OSINFO_IS_TREE(tree), NULL);
+
os = osinfo_tree_get_os(tree);
+ if (os == NULL)
+ return NULL;
+
os_variants = osinfo_os_get_variant_list(os);
g_object_unref(os);
--
2.20.1
More information about the Libosinfo
mailing list