diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index b5bd0a8a714b5e67e1d49d867ca48e3f82dd068a..40dbb96c90ca0f97b609f2535ce91305f49e6192 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -8122,7 +8122,7 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
         nalsize = 0;
         for(i = 0; i < h->nal_length_size; i++)
             nalsize = (nalsize << 8) | buf[buf_index++];
-        if(nalsize <= 1 || nalsize > buf_size){
+        if(nalsize <= 1 || (nalsize+buf_index > buf_size)){
             if(nalsize == 1){
                 buf_index++;
                 continue;