From 37c2a527b4c9d68bcf8657c44b1db2280052c28d Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Tue, 26 Sep 2023 17:27:17 -0700 Subject: [PATCH] libsysprof: be more defensive against oddly formed containers If we get a container file that is in a format we don't quite understand, avoid crashing and just bail. That will likely result in the inability to symbolize properly, but better than crashing. Fixes #100 --- src/libsysprof/sysprof-podman.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/libsysprof/sysprof-podman.c b/src/libsysprof/sysprof-podman.c index 81076e8c..b8e4ae20 100644 --- a/src/libsysprof/sysprof-podman.c +++ b/src/libsysprof/sysprof-podman.c @@ -252,18 +252,24 @@ sysprof_podman_get_layers (SysprofPodman *self, layers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); /* Add all our known layers starting from current layer */ - do - g_hash_table_add (layers, get_layer_dir (layer)); - while ((layer = find_parent_layer (self->layers_parser, layer, layers))); - - /* If an image was specified, add its layer */ - if ((layer = find_image_layer (self->images_parser, image))) + if (layer != NULL) { do g_hash_table_add (layers, get_layer_dir (layer)); while ((layer = find_parent_layer (self->layers_parser, layer, layers))); } + /* If an image was specified, add its layer */ + if (image != NULL) + { + if ((layer = find_image_layer (self->images_parser, image))) + { + do + g_hash_table_add (layers, get_layer_dir (layer)); + while ((layer = find_parent_layer (self->layers_parser, layer, layers))); + } + } + keys = (const char **)g_hash_table_get_keys_as_array (layers, NULL); ret = g_strdupv ((char **)keys);