url-mode: terminate last virtual line before regex matching

If the last line doesn't have a hard linebreak, it was never NULL
terminated, causing regexec() to crash on an out-of-bounds access.
This commit is contained in:
Daniel Eklöf 2025-02-10 08:54:42 +01:00
parent 4e5ad6e013
commit 98db965813
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -388,10 +388,14 @@ regex_detected(const struct terminal *term, enum url_action action,
}
}
/* Terminate the last line, if necessary */
if (vline->len > 0 && vline->utf8[vline->len - 1] != '\0')
vline->utf8[vline->len++] = '\0';
for (size_t i = 0; i < ALEN(vlines); i++) {
const struct vline *v = &vlines[i];
if (v->utf8 == NULL)
continue;;
continue;
const char *search_string = v->utf8;
while (true) {