Skip to content

Commit

Permalink
repo: Add checksum to error message opening unreadable object
Browse files Browse the repository at this point in the history
This would have debugged trying to do a pull as non-root from
a sysroot repository.  See for example:
#1562

Closes: #1564
Approved by: jlebon
  • Loading branch information
cgwalters authored and rh-atomic-bot committed May 1, 2018
1 parent 11c12cc commit c91cff3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/libostree/ostree-repo.c
Original file line number Diff line number Diff line change
Expand Up @@ -3545,6 +3545,9 @@ _ostree_repo_load_file_bare (OstreeRepo *self,
return FALSE;
}

const char *errprefix = glnx_strjoina ("Opening content object ", checksum);
GLNX_AUTO_PREFIX_ERROR (errprefix, error);

struct stat stbuf;
glnx_autofd int fd = -1;
g_autofree char *ret_symlink = NULL;
Expand Down Expand Up @@ -3585,7 +3588,7 @@ _ostree_repo_load_file_bare (OstreeRepo *self,
}

if (!(S_ISREG (stbuf.st_mode) || S_ISLNK (stbuf.st_mode)))
return glnx_throw (error, "Not a regular file or symlink: %s", loose_path_buf);
return glnx_throw (error, "Not a regular file or symlink");

/* In the non-bare-user case, gather symlink info if requested */
if (self->mode != OSTREE_REPO_MODE_BARE_USER
Expand Down
18 changes: 18 additions & 0 deletions tests/installed/nondestructive/itest-bare-unit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,21 @@ trap _tmpdir_cleanup EXIT
/usr/libexec/installed-tests/libostree/test-basic.sh
/usr/libexec/installed-tests/libostree/test-basic-c
date

# Test error message when opening a non-world-readable object
# https://github.com/ostreedev/ostree/issues/1562
rm repo files -rf
chmod a+rx .
ostree --repo=repo init --mode=bare
mkdir files
touch files/unreadable
chmod 0 files/unreadable
ostree --repo=repo commit -b testbranch --tree=dir=files
# We should be able to read as root due to CAP_DAC_OVERRIDE
ostree --repo=repo cat testbranch /unreadable >/dev/null
if setpriv --reuid bin --regid bin --clear-groups ostree --repo=repo cat testbranch /unreadable 2>err.txt; then
fatal "Listed unreadable object as non-root"
fi
assert_file_has_content err.txt "Opening content object.*openat: Permission denied"

date

0 comments on commit c91cff3

Please sign in to comment.