mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
builder: take size of the frame
spa_pod_builder_frame() should return the position in the builder memory or NULL when the frame doesn't fit. Check the size of the frame instead of assuming the frame is already written to the buffer.
This commit is contained in:
parent
bb60708ccc
commit
f19ca292e8
1 changed files with 4 additions and 2 deletions
|
|
@ -101,7 +101,9 @@ spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset)
|
|||
static inline struct spa_pod *
|
||||
spa_pod_builder_frame(struct spa_pod_builder *builder, struct spa_pod_frame *frame)
|
||||
{
|
||||
return spa_pod_builder_deref(builder, frame->offset);
|
||||
if (frame->offset + SPA_POD_SIZE(&frame->pod) <= builder->size)
|
||||
return SPA_MEMBER(builder->data, frame->offset, struct spa_pod);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
|
@ -162,7 +164,7 @@ static inline void *spa_pod_builder_pop(struct spa_pod_builder *builder, struct
|
|||
{
|
||||
struct spa_pod *pod;
|
||||
|
||||
if ((pod = (struct spa_pod *) spa_pod_builder_frame(builder, frame)) != NULL)
|
||||
if ((pod = (struct spa_pod*)spa_pod_builder_frame(builder, frame)) != NULL)
|
||||
*pod = frame->pod;
|
||||
|
||||
builder->state.frame = frame->parent;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue