diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-01-05 00:52:47 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-01-05 01:40:51 +0100 |
commit | 2cf4172a71860c6e44edd27a3b68047ae062d7fc (patch) | |
tree | f55e2a8c0eff662d0ab7471ef8ac2526fe19ed36 /src/journal-remote/journal-upload.c | |
parent | b798e7baa5dc3ca6199bbff69f71a08d94299fdd (diff) |
journal: install sigbus handler for journal tools too
This makes them robust regarding truncation. Ideally, we'd export this
as an API, but given how messy SIGBUS handling is, and the uncertain
ownership logic of signal handlers we should not do this (unless libc
one day invents a scheme how to sanely install SIGBUS handlers for
specific memory areas only). However, for now we can still make all our
own tools robust.
Note that external tools will only have read-access to the journal
anyway, where SIGBUS is much more unlikely, given that only writes are
subject to disk full problems.
Diffstat (limited to 'src/journal-remote/journal-upload.c')
-rw-r--r-- | src/journal-remote/journal-upload.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index 62853b6367..5b25da56d3 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -26,13 +26,13 @@ #include <getopt.h> #include "sd-daemon.h" - #include "log.h" #include "util.h" #include "build.h" #include "fileio.h" #include "mkdir.h" #include "conf-parser.h" +#include "sigbus.h" #include "journal-upload.h" #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-upload.pem" @@ -40,14 +40,10 @@ #define TRUST_FILE CERTIFICATE_ROOT "/ca/trusted.pem" #define DEFAULT_PORT 19532 -static const char* arg_url; - -static void close_fd_input(Uploader *u); - +static const char* arg_url = NULL; static const char *arg_key = NULL; static const char *arg_cert = NULL; static const char *arg_trust = NULL; - static const char *arg_directory = NULL; static char **arg_file = NULL; static const char *arg_cursor = NULL; @@ -58,6 +54,8 @@ static bool arg_merge = false; static int arg_follow = -1; static const char *arg_save_state = NULL; +static void close_fd_input(Uploader *u); + #define SERVER_ANSWER_KEEP 2048 #define STATE_FILE "/var/lib/systemd/journal-upload/state" @@ -792,6 +790,8 @@ int main(int argc, char **argv) { if (r <= 0) goto finish; + sigbus_install(); + r = setup_uploader(&u, arg_url, arg_save_state); if (r < 0) goto cleanup; |