overflow: fix some more potential overflows

This commit is contained in:
Wim Taymans 2026-04-27 12:29:31 +02:00
parent fb4e148985
commit daa66c0646
5 changed files with 48 additions and 18 deletions

View file

@ -580,14 +580,14 @@ static void recalculate_buffer(struct impl *impl)
size_t alloc_size;
if (spa_overflow_add(delay, 1u << 15, &impl->buffer_size) ||
spa_overflow_mul(impl->buffer_size, 4u, &impl->buffer_size)) {
spa_overflow_mul(impl->buffer_size, 4u, &impl->buffer_size) ||
spa_overflow_mul((size_t)impl->buffer_size, (size_t)impl->channels, &alloc_size)) {
pw_log_warn("delay too large, delay disabled");
impl->buffer_size = 0;
free(impl->buffer_data);
impl->buffer_data = NULL;
goto done;
}
alloc_size = (size_t)impl->buffer_size * impl->channels;
data = realloc(impl->buffer_data, alloc_size);
if (data == NULL) {
pw_log_warn("can't allocate delay buffer, delay disabled: %m");