diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 99172a182305b0da2993f1c4c1ba3616f2ca130c..2047d5fc61db121ffe2d9d2b3a72cc286e435e01 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -7973,7 +7973,8 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
       }
 
         ptr= decode_nal(h, buf + buf_index, &dst_length, &consumed, h->is_avc ? nalsize : buf_size - buf_index);
-        if(ptr[dst_length - 1] == 0) dst_length--;
+        while(ptr[dst_length - 1] == 0 && dst_length > 1)
+            dst_length--;
         bit_length= 8*dst_length - decode_rbsp_trailing(ptr + dst_length - 1);
 
         if(s->avctx->debug&FF_DEBUG_STARTCODE){