X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fcoredump.c;h=733373b3071d16a70710aa19e9f034ae181bf729;hb=0a1b6da82109c3b08b1f966a1625a77cc312135a;hp=a7d3c34fe4c7881eecbc0a62e617122433e19708;hpb=ca0ceb6f3e7e8ffda57b18c2dfe72dfb9de08f35;p=elogind.git diff --git a/src/journal/coredump.c b/src/journal/coredump.c index a7d3c34fe..733373b30 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -240,8 +240,8 @@ int main(int argc, char* argv[]) { coredump_bufsize = COREDUMP_MIN_START; coredump_data = malloc(coredump_bufsize); if (!coredump_data) { - r = log_oom(); - goto finish; + log_warning("Failed to allocate memory for core, core will not be stored."); + goto finalize; } memcpy(coredump_data, "COREDUMP=", 9); @@ -251,7 +251,7 @@ int main(int argc, char* argv[]) { n = loop_read(STDIN_FILENO, coredump_data + coredump_size, coredump_bufsize - coredump_size, false); if (n < 0) { - log_error("Failed to read core dump data: %s", strerror(-n)); + log_error("Failed to read core data: %s", strerror(-n)); r = (int) n; goto finish; } else if (n == 0) @@ -259,14 +259,14 @@ int main(int argc, char* argv[]) { coredump_size += n; - if(coredump_size > COREDUMP_MAX) { - log_error("Coredump too large, ignoring"); - goto finish; + if (coredump_size > COREDUMP_MAX) { + log_error("Core too large, core will not be stored."); + goto finalize; } if (!GREEDY_REALLOC(coredump_data, coredump_bufsize, coredump_size + 1)) { - r = log_oom(); - goto finish; + log_warning("Failed to allocate memory for core, core will not be stored."); + goto finalize; } } @@ -274,9 +274,10 @@ int main(int argc, char* argv[]) { iovec[j].iov_len = coredump_size; j++; +finalize: r = sd_journal_sendv(iovec, j); if (r < 0) - log_error("Failed to send coredump: %s", strerror(-r)); + log_error("Failed to log coredump: %s", strerror(-r)); finish: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;