diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c
index 197e07f41142ad6d266b5e66424dfadbaa5bd1a6..e7c476ba4bc75473ce246f14d5b8a59e7d6e5933 100644
--- a/libavcodec/bitstream.c
+++ b/libavcodec/bitstream.c
@@ -283,6 +283,8 @@ int ff_init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes,
     av_dlog(NULL, "build table nb_codes=%d\n", nb_codes);
 
     buf = av_malloc((nb_codes + 1) * sizeof(VLCcode));
+    if (!buf)
+        return AVERROR(ENOMEM);
 
     assert(symbols_size <= 2 || !symbols);
     j = 0;