diff --git a/qrexec-lib/libqubes-rpc-filecopy.h b/qrexec-lib/libqubes-rpc-filecopy.h index f9f148d..fcf58e7 100644 --- a/qrexec-lib/libqubes-rpc-filecopy.h +++ b/qrexec-lib/libqubes-rpc-filecopy.h @@ -63,6 +63,7 @@ enum { int copy_file(int outfd, int infd, long long size, unsigned long *crc32); char *copy_file_status_to_str(int status); void set_size_limit(long long new_bytes_limit, long long new_files_limit); +void set_verbose(int value); int write_all(int fd, void *buf, int size); int read_all(int fd, void *buf, int size); int copy_fd_all(int fdout, int fdin); diff --git a/qrexec-lib/unpack.c b/qrexec-lib/unpack.c index 107eb3a..0de026f 100644 --- a/qrexec-lib/unpack.c +++ b/qrexec-lib/unpack.c @@ -16,6 +16,7 @@ long long bytes_limit = 0; long long files_limit = 0; long long total_bytes = 0; long long total_files = 0; +int verbose = 0; void set_size_limit(long long new_bytes_limit, long long new_files_limit) { @@ -23,6 +24,11 @@ void set_size_limit(long long new_bytes_limit, long long new_files_limit) files_limit = new_files_limit; } +void set_verbose(int value) +{ + verbose = value; +} + unsigned long crc32_sum = 0; int read_all_with_crc(int fd, void *buf, int size) { int ret; @@ -143,6 +149,8 @@ void process_one_file(struct file_header *untrusted_hdr) process_one_file_dir(untrusted_hdr, untrusted_namebuf); else do_exit(EINVAL, untrusted_namebuf); + if (verbose && !S_ISDIR(untrusted_hdr->mode)) + fprintf(stderr, "%s\n", untrusted_namebuf); } int do_unpack()