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;