diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 95ec67c1e50b00d1dade8a6e43197c9929084fa5..264579782427c1745a58b8bfb6bdd48bf0b94a30 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2507,6 +2507,8 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
         return AVERROR_INVALIDDATA;
 
     pkt = av_mallocz(sizeof(*pkt));
+    if (!pkt)
+        return AVERROR(ENOMEM);
     err = av_new_packet(pkt, text_len);
     if (err < 0) {
         av_free(pkt);
@@ -2592,6 +2594,8 @@ static int matroska_parse_frame(MatroskaDemuxContext *matroska,
         offset = 8;
 
     pkt = av_mallocz(sizeof(AVPacket));
+    if (!pkt)
+        return AVERROR(ENOMEM);
     /* XXX: prevent data copy... */
     if (av_new_packet(pkt, pkt_size + offset) < 0) {
         av_free(pkt);