From 22827a5e1e627115ae44a297be2ba5b35561700f Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Thu, 16 Oct 2014 11:41:19 +0200 Subject: [PATCH] protocol-native: Fail if trying to push unaligned memblock into queue We will just ignore the memblock if this happens. We already have a check for this in the client library, so this one is just for security reasons. Signed-off-by: David Henningsson --- src/pulsecore/protocol-native.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index 6ec65d6a3..2ef185401 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -4922,6 +4922,13 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o if (playback_stream_isinstance(stream)) { playback_stream *ps = PLAYBACK_STREAM(stream); + size_t frame_size = pa_frame_size(&ps->sink_input->sample_spec); + if (chunk->index % frame_size != 0 || chunk->length % frame_size != 0) { + pa_log_warn("Client sent non-aligned memblock: index %d, length %d, frame size: %d", + (int) chunk->index, (int) chunk->length, (int) frame_size); + return; + } + pa_atomic_inc(&ps->seek_or_post_in_queue); if (chunk->memblock) { if (seek != PA_SEEK_RELATIVE || offset != 0)