From bb60708ccc6292d772053b161149f3599d6ccf10 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 26 Jun 2019 05:16:44 -0400 Subject: [PATCH] pod: _builder_deref() always works with builder size --- spa/include/spa/pod/builder.h | 5 +++-- spa/include/spa/pod/filter.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spa/include/spa/pod/builder.h b/spa/include/spa/pod/builder.h index 9be8d3f38..240c53ca0 100644 --- a/spa/include/spa/pod/builder.h +++ b/spa/include/spa/pod/builder.h @@ -87,8 +87,9 @@ static inline void spa_pod_builder_init(struct spa_pod_builder *builder, void *d } static inline struct spa_pod * -spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset, uint32_t size) +spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset) { + uint32_t size = builder->size; if (offset + 8 <= size) { struct spa_pod *pod = SPA_MEMBER(builder->data, offset, struct spa_pod); if (offset + SPA_POD_SIZE(pod) <= size) @@ -100,7 +101,7 @@ spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset, uint32_t 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, builder->size); + return spa_pod_builder_deref(builder, frame->offset); } static inline void diff --git a/spa/include/spa/pod/filter.h b/spa/include/spa/pod/filter.h index c6c0c5015..dd2e9931f 100644 --- a/spa/include/spa/pod/filter.h +++ b/spa/include/spa/pod/filter.h @@ -367,7 +367,7 @@ spa_pod_filter(struct spa_pod_builder *b, spa_pod_builder_reset(b, &state); } else - *result = (struct spa_pod*)spa_pod_builder_deref(b, state.offset, b->size); + *result = (struct spa_pod*)spa_pod_builder_deref(b, state.offset); return res; }