mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05: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;
|
void **dst_datas;
|
||||||
uint32_t i, n_src_datas, n_dst_datas;
|
uint32_t i, n_src_datas, n_dst_datas;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
uint32_t n_samples, size, maxsize;
|
uint32_t n_samples, size, maxsize, offs;
|
||||||
|
|
||||||
spa_return_val_if_fail(node != NULL, -EINVAL);
|
spa_return_val_if_fail(node != NULL, -EINVAL);
|
||||||
|
|
||||||
|
|
@ -869,8 +869,9 @@ static int impl_node_process(struct spa_node *node)
|
||||||
|
|
||||||
size = UINT32_MAX;
|
size = UINT32_MAX;
|
||||||
for (i = 0; i < n_src_datas; i++) {
|
for (i = 0; i < n_src_datas; i++) {
|
||||||
size = SPA_MIN(size, inb->datas[0].chunk->size);
|
offs = SPA_MIN(inb->datas[i].chunk->offset, inb->datas[i].maxsize);
|
||||||
src_datas[i] = SPA_MEMBER(inb->datas[i].data, inb->datas[i].chunk->offset, void);
|
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;
|
n_samples = size / inport->stride;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue