From dbd88393bac1068b546925945e643dd582c5159c Mon Sep 17 00:00:00 2001 From: Luke Yang Date: Mon, 17 Jun 2024 11:03:00 -0400 Subject: [PATCH] wip test --- src/libostree/ostree-repo-static-delta-core.c | 18 +++++++++++++++--- src/switchroot/ostree-prepare-root.c | 3 +-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/libostree/ostree-repo-static-delta-core.c b/src/libostree/ostree-repo-static-delta-core.c index c419df5629..e1df82b7d3 100644 --- a/src/libostree/ostree-repo-static-delta-core.c +++ b/src/libostree/ostree-repo-static-delta-core.c @@ -406,10 +406,20 @@ ostree_repo_static_delta_execute_offline_with_signature (OstreeRepo *self, GFile if (dfd < 0) { if (errno != ENOTDIR) - return glnx_throw_errno_prefix (error, "openat(O_DIRECTORY)"); + { + return glnx_throw_errno_prefix (error, "openat(O_DIRECTORY)"); + } else { - g_autofree char *dir = g_path_get_dirname (dir_or_file_path); + g_autofree char *dir = ""; + if (dir_or_file_path[strlen (dir_or_file_path) - 1] == G_DIR_SEPARATOR) + { + g_autofree char *modifed_dir = g_strdup (dir_or_file_path); + modifed_dir[strlen (modifed_dir) - 1] = '\0'; + dir = g_path_get_dirname (modifed_dir); + } + else + dir = g_path_get_dirname (dir_or_file_path); basename = g_path_get_basename (dir_or_file_path); if (!glnx_opendirat (AT_FDCWD, dir, TRUE, &dfd, error)) @@ -417,7 +427,9 @@ ostree_repo_static_delta_execute_offline_with_signature (OstreeRepo *self, GFile } } else - basename = g_strdup ("superblock"); + { + basename = g_strdup ("superblock"); + } glnx_autofd int meta_fd = openat (dfd, basename, O_RDONLY | O_CLOEXEC); if (meta_fd < 0) diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c index 3fbba04a2d..2cb9f67ca9 100644 --- a/src/switchroot/ostree-prepare-root.c +++ b/src/switchroot/ostree-prepare-root.c @@ -565,13 +565,12 @@ main (int argc, char *argv[]) g_autofree char *ovl_options = g_strdup_printf ("lowerdir=%s,upperdir=%s,workdir=%s", lowerdir, upperdir, workdir); - if (mount ("overlay", TMP_SYSROOT "/etc", "overlay", MS_SILENT, ovl_options) < 0) + if (mount ("overlay", tmp_sysroot_etc, "overlay", MS_SILENT, ovl_options) < 0) err (EXIT_FAILURE, "failed to mount transient etc overlayfs"); } else { /* Bind-mount /etc (at deploy path), and remount as writable. */ - static const char *tmp_sysroot_etc = TMP_SYSROOT "/etc"; if (mount ("etc", tmp_sysroot_etc, NULL, MS_BIND | MS_SILENT, NULL) < 0) err (EXIT_FAILURE, "failed to prepare /etc bind-mount at /sysroot.tmp/etc"); if (mount (tmp_sysroot_etc, tmp_sysroot_etc, NULL, MS_BIND | MS_REMOUNT | MS_SILENT,