diff options
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r-- | src/journal/journalctl.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 7aedbf0c57..5a59a3ac83 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -746,11 +746,17 @@ static int add_matches(sd_journal *j, char **args) { } } else t = strappend("_EXE=", path); - } else if (S_ISCHR(st.st_mode)) - asprintf(&t, "_KERNEL_DEVICE=c%u:%u", major(st.st_rdev), minor(st.st_rdev)); - else if (S_ISBLK(st.st_mode)) - asprintf(&t, "_KERNEL_DEVICE=b%u:%u", major(st.st_rdev), minor(st.st_rdev)); - else { + } else if (S_ISCHR(st.st_mode)) { + if (asprintf(&t, "_KERNEL_DEVICE=c%u:%u", + major(st.st_rdev), + minor(st.st_rdev)) < 0) + return -ENOMEM; + } else if (S_ISBLK(st.st_mode)) { + if (asprintf(&t, "_KERNEL_DEVICE=b%u:%u", + major(st.st_rdev), + minor(st.st_rdev)) < 0) + return -ENOMEM; + } else { log_error("File is neither a device node, nor regular file, nor executable: %s", *i); return -EINVAL; } |