From dcdb253f012773b9055474ad31f2c9ae1377158c Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 14 Jun 2020 23:18:44 -0700 Subject: [PATCH] programs: make the test programs show libfsverity error messages Signed-off-by: Eric Biggers --- programs/fsverity.c | 7 +------ programs/test_compute_digest.c | 3 +++ programs/test_hash_algs.c | 3 +++ programs/test_sign_digest.c | 3 +++ programs/utils.c | 10 ++++++++++ programs/utils.h | 2 ++ 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/programs/fsverity.c b/programs/fsverity.c index 7af0417..fe00559 100644 --- a/programs/fsverity.c +++ b/programs/fsverity.c @@ -200,16 +200,11 @@ u32 get_default_block_size(void) return n; } -static void print_libfsverity_error(const char *msg) -{ - error_msg("%s", msg); -} - int main(int argc, char *argv[]) { const struct fsverity_command *cmd; - libfsverity_set_error_callback(print_libfsverity_error); + install_libfsverity_error_handler(); if (argc < 2) { error_msg("no command specified"); diff --git a/programs/test_compute_digest.c b/programs/test_compute_digest.c index fab64a4..4b9f38f 100644 --- a/programs/test_compute_digest.c +++ b/programs/test_compute_digest.c @@ -4,6 +4,7 @@ * * Copyright 2020 Google LLC */ + #include "utils.h" #define SHA256_DIGEST_SIZE 32 @@ -43,6 +44,8 @@ int main(void) "\x86\x52"; int err; + install_libfsverity_error_handler(); + f.data = xmalloc(f.size); for (i = 0; i < f.size; i++) f.data[i] = (i % 11) + (i % 439) + (i % 1103); diff --git a/programs/test_hash_algs.c b/programs/test_hash_algs.c index 80d7a07..16cc408 100644 --- a/programs/test_hash_algs.c +++ b/programs/test_hash_algs.c @@ -4,6 +4,7 @@ * * Copyright 2020 Google LLC */ + #include "utils.h" #define SHA256_DIGEST_SIZE 32 @@ -11,6 +12,8 @@ int main(void) { + install_libfsverity_error_handler(); + ASSERT(libfsverity_get_digest_size(0) == -1); ASSERT(libfsverity_get_hash_name(0) == NULL); ASSERT(libfsverity_find_hash_alg_by_name("bad") == 0); diff --git a/programs/test_sign_digest.c b/programs/test_sign_digest.c index 52738e4..b0bb328 100644 --- a/programs/test_sign_digest.c +++ b/programs/test_sign_digest.c @@ -4,6 +4,7 @@ * * Copyright 2020 Google LLC */ + #include "utils.h" #include @@ -24,6 +25,8 @@ int main(void) u64 expected_sig_size; int err; + install_libfsverity_error_handler(); + d->digest_algorithm = FS_VERITY_HASH_ALG_SHA256; d->digest_size = SHA256_DIGEST_SIZE; memcpy(d->digest, diff --git a/programs/utils.c b/programs/utils.c index 7d89405..4792e72 100644 --- a/programs/utils.c +++ b/programs/utils.c @@ -84,6 +84,16 @@ __noreturn void assertion_failed(const char *expr, const char *file, int line) fatal_error("Assertion failed: %s at %s:%d", expr, file, line); } +static void print_libfsverity_error(const char *msg) +{ + error_msg("%s", msg); +} + +void install_libfsverity_error_handler(void) +{ + libfsverity_set_error_callback(print_libfsverity_error); +} + /* ========== File utilities ========== */ bool open_file(struct filedes *file, const char *filename, int flags, int mode) diff --git a/programs/utils.h b/programs/utils.h index b7d4188..07773d3 100644 --- a/programs/utils.h +++ b/programs/utils.h @@ -27,6 +27,8 @@ __cold __noreturn void assertion_failed(const char *expr, #define ASSERT(e) ({ if (!(e)) assertion_failed(#e, __FILE__, __LINE__); }) +void install_libfsverity_error_handler(void); + struct filedes { int fd; char *name; /* filename, for logging or error messages */