From a72a4c8b91dd7e0cd644963fe2a50fb07685e4d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigrid=20Solveig=20Hafl=C3=ADnud=C3=B3ttir?= Date: Wed, 9 Feb 2022 00:42:10 +0000 Subject: [PATCH] audio/flacdec: handle read errors properly to avoid endless looping saturating cpu --- sys/src/cmd/audio/flacdec/flacdec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/src/cmd/audio/flacdec/flacdec.c b/sys/src/cmd/audio/flacdec/flacdec.c index fcdd2e57a..c6c43ba0f 100644 --- a/sys/src/cmd/audio/flacdec/flacdec.c +++ b/sys/src/cmd/audio/flacdec/flacdec.c @@ -25,10 +25,11 @@ decinput(FLAC__StreamDecoder *dec, FLAC__byte buffer[], size_t *bytes, void *cli int n = *bytes; n = fread(buffer, 1, n, stdin); - if(n < 0) + if(n < 1){ + if(feof(stdin)) + return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; return FLAC__STREAM_DECODER_READ_STATUS_ABORT; - if(n == 0) - return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + } *bytes = n; return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;