diff --git a/CHANGELOG.md b/CHANGELOG.md index dd2bfff..f1d6b0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ ([#330][330]). * i3/sway: incorrect empty/title state of workspaces ([#343][343]). * mem: state updated on each bar redraw ([#352][352]). +* script: buffer overflow when reading large amounts of data. [311]: https://codeberg.org/dnkl/yambar/issues/311 [302]: https://codeberg.org/dnkl/yambar/issues/302 diff --git a/modules/script.c b/modules/script.c index 63928a6..0932cb2 100644 --- a/modules/script.c +++ b/modules/script.c @@ -298,7 +298,7 @@ data_received(struct module *mod, const char *data, size_t len) { struct private *m = mod->private; - if (len > m->recv_buf.sz - m->recv_buf.idx) { + while (len > m->recv_buf.sz - m->recv_buf.idx) { size_t new_sz = m->recv_buf.sz == 0 ? 1024 : m->recv_buf.sz * 2; char *new_buf = realloc(m->recv_buf.data, new_sz);