diff options
Diffstat (limited to 'vmcore-dmesg/vmcore-dmesg.c')
-rw-r--r-- | vmcore-dmesg/vmcore-dmesg.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c index fe7df8ec..81c2a58c 100644 --- a/vmcore-dmesg/vmcore-dmesg.c +++ b/vmcore-dmesg/vmcore-dmesg.c @@ -5,9 +5,19 @@ typedef Elf32_Nhdr Elf_Nhdr; extern const char *fname; +/* stole this macro from kernel printk.c */ +#define LOG_BUF_LEN_MAX (uint32_t)(1 << 31) + static void write_to_stdout(char *buf, unsigned int nr) { ssize_t ret; + static uint32_t n_bytes = 0; + + n_bytes += nr; + if (n_bytes > LOG_BUF_LEN_MAX) { + fprintf(stderr, "The vmcore-dmesg.txt over 2G in size is not supported.\n"); + exit(53); + } ret = write(STDOUT_FILENO, buf, nr); if (ret != nr) { |