diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 760cc25b8caa1712ce3527ae4e5a7a71ffd0ca7b..86ea70f7771c9b29c4ad3ec2cd2e3afeb5d85316 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -64,6 +64,8 @@ static int ogg_save(AVFormatContext *s)
     struct ogg_state *ost =
         av_malloc(sizeof(*ost) + (ogg->nstreams - 1) * sizeof(*ogg->streams));
     int i;
+    if (!ost)
+        return AVERROR(ENOMEM);
     ost->pos      = avio_tell(s->pb);
     ost->curidx   = ogg->curidx;
     ost->next     = ogg->state;
@@ -192,6 +194,9 @@ static int ogg_new_buf(struct ogg *ogg, int idx)
     uint8_t *nb = av_malloc(os->bufsize + FF_INPUT_BUFFER_PADDING_SIZE);
     int size = os->bufpos - os->pstart;
 
+    if (!nb)
+        return AVERROR(ENOMEM);
+
     if (os->buf) {
         memcpy(nb, os->buf + os->pstart, size);
         av_free(os->buf);