vprintf(fmt, args);
} else {
len += vsnprintf(message + len, sizeof(message) - len, fmt, args);
- if (len == sizeof(message)) {
+ if (len < 0 ) {
+ fprintf(stderr, "BUG: something is overflowing here. Dropping the log entry\n");
+ return;
+ }
+
+ if (len >= sizeof(message)) {
fprintf(stderr, "BUG: single log message > 4k\n");
}
+
/* If there is no space for the current message (plus trailing
* nullbyte) in the ringbuffer, we need to wrap and write to the
* beginning again. */