1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-27 01:55:32 +03:00

log: pass the correct length to vsnprintf (#6168)

This prevents log_object_internalv from corrupting the stack.
Closes #6147.

Many thanks to Walter Doekes for the code review.
This commit is contained in:
Evgeny Vereshchagin 2017-06-22 04:10:29 +03:00 committed by Zbigniew Jędrzejewski-Szmek
parent c9fb8c7c4a
commit 1741b25c72

View File

@ -720,7 +720,6 @@ int log_object_internalv(
PROTECT_ERRNO;
char *buffer, *b;
size_t l;
if (error < 0)
error = -error;
@ -737,16 +736,12 @@ int log_object_internalv(
size_t n;
n = strlen(object);
l = n + 2 + LINE_MAX;
buffer = newa(char, l);
buffer = newa(char, n + 2 + LINE_MAX);
b = stpcpy(stpcpy(buffer, object), ": ");
} else {
l = LINE_MAX;
b = buffer = newa(char, l);
}
} else
b = buffer = newa(char, LINE_MAX);
vsnprintf(b, l, format, ap);
vsnprintf(b, LINE_MAX, format, ap);
return log_dispatch_internal(level, error, file, line, func,
object_field, object, extra_field, extra, buffer);