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:
@@ -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;
|
||||
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user