Skip to content

Commit cf81f6c

Browse files
jdksjolentstuefe
authored andcommitted
8285712: LogMessageBuffer doesn't check vsnprintf return value
Reviewed-by: dholmes, iklam
1 parent 9795ef5 commit cf81f6c

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/hotspot/share/logging/logMessageBuffer.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,14 @@ void LogMessageBuffer::vwrite(LogLevelType level, const char* fmt, va_list args)
110110

111111
va_list copy;
112112
va_copy(copy, args);
113-
written += (size_t)os::vsnprintf(current_buffer_position, remaining_buffer_length, fmt, copy) + 1;
113+
int ret = os::vsnprintf(current_buffer_position, remaining_buffer_length, fmt, copy);
114114
va_end(copy);
115+
assert(ret >= 0, "Log message buffer issue");
116+
if (ret < 0) {
117+
this->write(level, "%s", "Log message buffer issue");
118+
return;
119+
}
120+
written += (size_t)ret + 1;
115121
if (written > _message_buffer_capacity - _message_buffer_size) {
116122
assert(attempts == 0, "Second attempt should always have a sufficiently large buffer (resized to fit).");
117123
grow(_message_buffer, _message_buffer_capacity, _message_buffer_size + written);

0 commit comments

Comments
 (0)