Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/pr/534'
Browse files Browse the repository at this point in the history
* origin/pr/534:
  qubes-fs-tree-check: Detect if a directory is unsafe for display
  qubes-fs-tree-check: add --help
  • Loading branch information
marmarek committed Nov 15, 2024
2 parents 1fa9308 + 9004e75 commit cce98b6
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion qubes-rpc/qubes-fs-tree-check.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@ process_dirent(const char *d_name, int fd, int flags, const char *name,
int sub_file = openat(fd, d_name, O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC | O_RDONLY);
if (sub_file < 0)
err(1, "open(%s)", escaped);
return simple_fs_walk(sub_file, ignore_symlinks, name, flags, size);
// If "bad" is true, return "true", but still do the
// FS walk to get the amount of data to copy.
return simple_fs_walk(sub_file, ignore_symlinks, name, flags, size) || bad;
} else {
// __builtin_add_overflow uses infinite signed precision,
// so a negative number would not cause overflow.
Expand Down Expand Up @@ -193,6 +195,7 @@ const struct option opts[] = {
{"no-allow-directories", no_argument, NULL, 'D'},
{"allow-all-names", no_argument, NULL, 'u'},
{"no-allow-all-names", no_argument, NULL, 'U'},
{"help", no_argument, NULL, 'h'},
{0, 0, NULL, 0},
};

Expand Down Expand Up @@ -240,6 +243,19 @@ int main(int argc, char **argv)
case 'U':
flags &= ~COPY_ALLOW_UNSAFE_CHARACTERS;
break;
case 'h':
fputs("Usage:\n"
" --help Print this message\n"
" --machine-readable Print the number of bytes to copy on stdout\n"
" --ignore-symlinks Ignore symbolic links; overrides previous --no-ignore-symlinks\n"
" --no-ignore-symlinks Do not ignore symbolic links; overrides previous --ignore-symlinks\n"
" --allow-directories Allow directories; overrides previous --no-allow-directories\n"
" --no-allow-directories Do not allow directories; overrides previous --allow-directories\n"
" --allow-all-names Allow all-names; overrides previous --no-allow-all-names\n"
" --no-allow-all-names Do not allow all-names; overrides previous --allow-all-names\n",
stderr);
fflush(stderr);
return ferror(stderr) ? 1 : 0;
default:
abort();
}
Expand Down

0 comments on commit cce98b6

Please sign in to comment.