summaryrefslogtreecommitdiff
path: root/src/pulsecore/protocol-native.c
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2014-10-16 11:41:19 +0200
committerDavid Henningsson <david.henningsson@canonical.com>2014-10-24 15:01:13 +0200
commit22827a5e1e627115ae44a297be2ba5b35561700f (patch)
tree341ce7172dd15094f070a3d01cd1f7408c043d7d /src/pulsecore/protocol-native.c
parent150ace90f3808bbb7240e18a11140d66a7bda146 (diff)
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 <david.henningsson@canonical.com>
Diffstat (limited to 'src/pulsecore/protocol-native.c')
-rw-r--r--src/pulsecore/protocol-native.c7
1 files changed, 7 insertions, 0 deletions
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)