diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 25b07b1192..5171f8e2df 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -288,12 +288,15 @@ static int tar_pull_make_local_copy(TarPull *p) { if (fstat(directory_fd, &st) < 0) return log_error_errno(errno, "Failed to stat '%s': %m", p->final_path); - if (uid_is_foreign(st.st_uid)) { - r = mountfsd_mount_directory_fd(directory_fd, p->userns_fd, DISSECT_IMAGE_FOREIGN_UID, &p->tree_fd); - if (r < 0) - return r; - } else - p->tree_fd = TAKE_FD(directory_fd); + if (!uid_is_foreign(st.st_uid)) + return log_error_errno( + SYNTHETIC_ERRNO(EINVAL), + "Image tree '%s' is not owned by the foreign UID range, refusing.", + p->final_path); + + r = mountfsd_mount_directory_fd(directory_fd, p->userns_fd, DISSECT_IMAGE_FOREIGN_UID, &p->tree_fd); + if (r < 0) + return r; } _cleanup_close_ int directory_fd = -EBADF;