diff --git a/monitor/packet.c b/monitor/packet.c
index 76c3793..8003b8d 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
}
if (text) {
- n = sprintf(line + pos, ": %s", text);
+ int extra_len = extra ? strlen(extra) : 0;
+ int max_len = col - len - extra_len - ts_len - 3;
+
+ n = snprintf(line + pos, max_len + 1, ": %s", text);
+ if (n > max_len) {
+ line[pos + max_len - 1] = '.';
+ line[pos + max_len - 2] = '.';
+ if (line[pos + max_len - 3] == ' ')
+ line[pos + max_len - 3] = '.';
+
+ n = max_len;
+ }
+
if (n > 0) {
pos += n;
len += n;