diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index 25eabdb215532813f83e3751d0ece22946e72dfe..557258d83906298bd984f9669a0467278fab4afc 100644
--- a/libavcodec/avpacket.c
+++ b/libavcodec/avpacket.c
@@ -365,8 +365,13 @@ int av_packet_ref(AVPacket *dst, AVPacket *src)
         if (ret < 0)
             goto fail;
         memcpy(dst->buf->data, src->data, src->size);
-    } else
+    } else {
         dst->buf = av_buffer_ref(src->buf);
+        if (!dst->buf) {
+            ret = AVERROR(ENOMEM);
+            goto fail;
+        }
+    }
 
     dst->size = src->size;
     dst->data = dst->buf->data;