diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
index 9bf950ae3e..95623cbbbc 100644
--- a/libavcodec/flacdec.c
+++ b/libavcodec/flacdec.c
@@ -366,8 +366,11 @@ static inline int decode_subframe(FLACContext *s, int channel)
                    bps, left);
             return AVERROR_INVALIDDATA;
         }
-        while (!get_bits1(&s->gb))
+        while (!get_bits1(&s->gb)) {
             wasted++;
+            if (get_bits_left(&s->gb) <= 0)
+                return AVERROR_INVALIDDATA;
+        }
         bps -= wasted;
     }
     if (bps > 32) {