--- lbbs/src/screen.c 2025/05/31 14:59:18 1.86 +++ lbbs/src/screen.c 2025/06/01 14:32:41 1.87 @@ -438,10 +438,16 @@ int display_data(const void *p_data, lon len = p_line_offsets[line_current + 1] - p_line_offsets[line_current]; if (len >= LINE_BUFFER_LEN) { - log_error("buffer overflow: len=%ld(%ld - %ld) line=%ld \n", + log_error("Buffer overflow: len=%ld(%ld - %ld) line=%ld \n", len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current); len = LINE_BUFFER_LEN - 1; } + else if (len < 0) + { + log_error("Incorrect line offsets: len=%ld(%ld - %ld) line=%ld \n", + len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current); + len = 0; + } memcpy(buffer, (const char *)p_data + p_line_offsets[line_current], (size_t)len); buffer[len] = '\0';