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:
parent
c9fb8c7c4a
commit
1741b25c72
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user