shared/logs-show: fix mixup between length-based memory duplication and string operations

We'd look for a '=' separator using memchr, i.e. ignoring any nul bytes in the
string, but then do a strndup, which would terminate on any nul byte, and then
again do a memcmp, which would access memory past the chunk allocated by strndup.

Of course, we probably shouldn't allow keys with nul bytes in them. But we
currently do, so there might be journal files like that out there. So let's fix
the journal-reading code first.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2018-05-31 14:30:23 +02:00
parent 2e69f4114c
commit 324d6aa926
2 changed files with 2 additions and 2 deletions
+2 -2
View File
@@ -839,7 +839,7 @@ static int output_json(
if (!eq)
continue;
n = strndup(data, eq - (const char*) data);
n = memdup_suffix0(data, eq - (const char*) data);
if (!n) {
r = log_oom();
goto finish;
@@ -891,7 +891,7 @@ static int output_json(
m = eq - (const char*) data;
n = strndup(data, m);
n = memdup_suffix0(data, m);
if (!n) {
r = log_oom();
goto finish;