[ostree] delta: Ensure the from commit exists when applying static delta



commit e418acb31bf34fed118eefbc7118c64c490f6c10
Author: Alexander Larsson <alexl redhat com>
Date:   Thu Oct 15 16:59:49 2015 +0200

    delta: Ensure the from commit exists when applying static delta

 src/libostree/ostree-repo-static-delta-core.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/src/libostree/ostree-repo-static-delta-core.c b/src/libostree/ostree-repo-static-delta-core.c
index f014b61..2168985 100644
--- a/src/libostree/ostree-repo-static-delta-core.c
+++ b/src/libostree/ostree-repo-static-delta-core.c
@@ -245,6 +245,7 @@ ostree_repo_static_delta_execute_offline (OstreeRepo                    *self,
     g_autoptr(GVariant) from_csum_v = NULL;
     g_autoptr(GVariant) to_commit = NULL;
     gboolean have_to_commit;
+    gboolean have_from_commit;
 
     to_csum_v = g_variant_get_child_value (meta, 3);
     if (!ostree_validate_structureof_csum_v (to_csum_v, error))
@@ -257,6 +258,17 @@ ostree_repo_static_delta_execute_offline (OstreeRepo                    *self,
         if (!ostree_validate_structureof_csum_v (from_csum_v, error))
           goto out;
         from_checksum = ostree_checksum_from_bytes_v (from_csum_v);
+
+        if (!ostree_repo_has_object (self, OSTREE_OBJECT_TYPE_COMMIT, from_checksum,
+                                     &have_from_commit, cancellable, error))
+          goto out;
+
+        if (!have_from_commit)
+          {
+            g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                         "Commit %s, which is the delta source, is not in repository", from_checksum);
+            goto out;
+          }
       }
 
     if (!ostree_repo_has_object (self, OSTREE_OBJECT_TYPE_COMMIT, to_checksum,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]