From 1e5ff71c498f85af209ccaf0eee3c4cff26f21ac Mon Sep 17 00:00:00 2001 From: Dan Nicholson Date: Tue, 9 Aug 2016 11:45:25 -0700 Subject: [PATCH] deltas: Handle cleanup of fd array properly If there's an early error, part_temp_fds will be NULL and dereferencing the len member will segfault. Closes: #454 Closes: #448 Approved by: cgwalters --- .../ostree-repo-static-delta-compilation.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/libostree/ostree-repo-static-delta-compilation.c b/src/libostree/ostree-repo-static-delta-compilation.c index 8b388094..7ef7680d 100644 --- a/src/libostree/ostree-repo-static-delta-compilation.c +++ b/src/libostree/ostree-repo-static-delta-compilation.c @@ -1584,13 +1584,14 @@ ostree_repo_static_delta_generate (OstreeRepo *self, ret = TRUE; out: - for (i = 0; i < part_temp_fds->len; i++) - { - int fd = g_array_index (part_temp_fds, int, i); - if (fd == -1) - continue; - (void) close (fd); - } + if (part_temp_fds) + for (i = 0; i < part_temp_fds->len; i++) + { + int fd = g_array_index (part_temp_fds, int, i); + if (fd == -1) + continue; + (void) close (fd); + } g_clear_pointer (&builder.parts, g_ptr_array_unref); g_clear_pointer (&builder.fallback_objects, g_ptr_array_unref); return ret;