e046734
From 97248e26cdd728c025cc709496d4250350a4878a Mon Sep 17 00:00:00 2001
ed724b6
From: Yi EungJun <semtlenori@gmail.com>
ed724b6
Date: Sun, 7 Aug 2016 05:39:13 +0900
ed724b6
Subject: [PATCH] journal-gatewayd: fix segfault with certain request (#3893)
ed724b6
ed724b6
When client requests to get logs with `follow` and `KEY=match` that
ed724b6
doesn't match any log entry, journal-gatewayd segfaulted.
ed724b6
ed724b6
Make request_reader_entries to return zero in such case to wait for
ed724b6
matching entries.
ed724b6
ed724b6
This fixes https://github.com/systemd/systemd/issues/3873.
e046734
ed724b6
(cherry picked from commit 3475fc5899db8c8c9198573912429b85213e4862)
ed724b6
---
ed724b6
 src/journal-remote/journal-gatewayd.c | 3 +++
ed724b6
 1 file changed, 3 insertions(+)
ed724b6
ed724b6
diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c
e046734
index 4ad9184993..e4a82871b5 100644
ed724b6
--- a/src/journal-remote/journal-gatewayd.c
ed724b6
+++ b/src/journal-remote/journal-gatewayd.c
ed724b6
@@ -239,6 +239,9 @@ static ssize_t request_reader_entries(
ed724b6
                 m->size = (uint64_t) sz;
ed724b6
         }
ed724b6
 
ed724b6
+        if (m->tmp == NULL && m->follow)
ed724b6
+                return 0;
ed724b6
+
ed724b6
         if (fseeko(m->tmp, pos, SEEK_SET) < 0) {
ed724b6
                 log_error_errno(errno, "Failed to seek to position: %m");
ed724b6
                 return MHD_CONTENT_READER_END_WITH_ERROR;