static-delta: Set error on bsdiff failure
authorJohn Hiesey <john@hiesey.com>
Fri, 2 Oct 2015 00:26:47 +0000 (17:26 -0700)
committerColin Walters <walters@verbum.org>
Sat, 10 Oct 2015 14:38:01 +0000 (10:38 -0400)
bsdiff can fail when generating static deltas, particularly if
not enough memory is available. Set error properly when this happens.

https://bugzilla.gnome.org/show_bug.cgi?id=756260

src/libostree/ostree-repo-static-delta-compilation.c

index 063c4088ad93b40e55b4fbdec87adb7df198c454..c63942f06c2f512d3f6c9f05b4c80decaf226dc8 100644 (file)
@@ -829,8 +829,10 @@ process_one_bsdiff (OstreeRepo                       *repo,
       op.cancellable = cancellable;
       op.error = error;
       stream.opaque = &op;
-      if (bsdiff (tmp_from_buf, tmp_from_len, tmp_to_buf, tmp_to_len, &stream) < 0)
+      if (bsdiff (tmp_from_buf, tmp_from_len, tmp_to_buf, tmp_to_len, &stream) < 0) {
+        g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "bsdiff generation failed");
         goto out;
+      }
 
       payload = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (out));
       payload_size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (out));