mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
fmtconvert: check bounds on chunk offset/size
This commit is contained in:
parent
58f3146b60
commit
30ecf66561
1 changed files with 4 additions and 3 deletions
|
|
@ -828,7 +828,7 @@ static int impl_node_process(struct spa_node *node)
|
|||
void **dst_datas;
|
||||
uint32_t i, n_src_datas, n_dst_datas;
|
||||
int res = 0;
|
||||
uint32_t n_samples, size, maxsize;
|
||||
uint32_t n_samples, size, maxsize, offs;
|
||||
|
||||
spa_return_val_if_fail(node != NULL, -EINVAL);
|
||||
|
||||
|
|
@ -869,8 +869,9 @@ static int impl_node_process(struct spa_node *node)
|
|||
|
||||
size = UINT32_MAX;
|
||||
for (i = 0; i < n_src_datas; i++) {
|
||||
size = SPA_MIN(size, inb->datas[0].chunk->size);
|
||||
src_datas[i] = SPA_MEMBER(inb->datas[i].data, inb->datas[i].chunk->offset, void);
|
||||
offs = SPA_MIN(inb->datas[i].chunk->offset, inb->datas[i].maxsize);
|
||||
size = SPA_MIN(size, SPA_MIN(inb->datas[i].maxsize - offs, inb->datas[i].chunk->size));
|
||||
src_datas[i] = SPA_MEMBER(inb->datas[i].data, offs, void);
|
||||
}
|
||||
n_samples = size / inport->stride;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue