aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder_api.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-11-15 19:27:30 +0100
committerMax Kellermann <max@duempel.org>2008-11-15 19:27:30 +0100
commitacfba02310a1b8159440dd71bdf7c7fefb7ef8fb (patch)
treea791b34bff1bf2bf24130f91a5efcf4da4a04eb2 /src/decoder_api.c
parentc368a2f91cd90083b4e4e1426182cf7b7a2a6d21 (diff)
downloadmpd-acfba02310a1b8159440dd71bdf7c7fefb7ef8fb.tar.gz
mpd-acfba02310a1b8159440dd71bdf7c7fefb7ef8fb.tar.xz
mpd-acfba02310a1b8159440dd71bdf7c7fefb7ef8fb.zip
decoder: check length==0 in decoder_read()
When the caller passes length==0, decoder_read() entered an endless loop. Check that condition before entering the "while" loop.
Diffstat (limited to '')
-rw-r--r--src/decoder_api.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/decoder_api.c b/src/decoder_api.c
index 08e6b1956..0aca4da95 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -106,6 +106,9 @@ size_t decoder_read(struct decoder *decoder,
assert(is != NULL);
assert(buffer != NULL);
+ if (length == 0)
+ return 0;
+
while (true) {
/* XXX don't allow decoder==NULL */
if (decoder != NULL &&