lib/core: Avoid NULL deref in content_file_parse() if out variable unset
authorColin Walters <walters@verbum.org>
Thu, 22 Jun 2017 17:01:50 +0000 (13:01 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 23 Jun 2017 14:11:36 +0000 (14:11 +0000)
Prep for a change in `ostree_repo_load_file()`.  We would crash if a
caller had `out_file_info = NULL`, because we deref `ret_file_info`
below it.

Closes: #951
Approved by: jlebon

src/libostree/ostree-core.c

index abc204e92eb8b12657486f001c28da7690d0b444..32516b7ce4d2dbc3f8cdb6903bc61496553b165d 100644 (file)
@@ -644,7 +644,7 @@ ostree_content_stream_parse (gboolean                compressed,
   if (compressed)
     {
       if (!zlib_file_header_parse (file_header,
-                                   out_file_info ? &ret_file_info : NULL,
+                                   &ret_file_info,
                                    out_xattrs ? &ret_xattrs : NULL,
                                    error))
         return FALSE;
@@ -652,12 +652,11 @@ ostree_content_stream_parse (gboolean                compressed,
   else
     {
       if (!file_header_parse (file_header,
-                              out_file_info ? &ret_file_info : NULL,
+                              &ret_file_info,
                               out_xattrs ? &ret_xattrs : NULL,
                               error))
         return FALSE;
-      if (ret_file_info)
-        g_file_info_set_size (ret_file_info, input_length - archive_header_size - 8);
+      g_file_info_set_size (ret_file_info, input_length - archive_header_size - 8);
     }
 
   g_autoptr(GInputStream) ret_input = NULL;