diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c
index 7c7ae5c9b9049e0666cc076c13a099df839d9c00..57ee07d32b0d3212fbd02515d8f1752b7daa12a5 100644
--- a/libavutil/imgutils.c
+++ b/libavutil/imgutils.c
@@ -309,11 +309,15 @@ int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4],
 
 int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align)
 {
+    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
     uint8_t *data[4];
     int linesize[4];
+
+    if (!desc)
+        return AVERROR(EINVAL);
     if (av_image_check_size(width, height, 0, NULL) < 0)
         return AVERROR(EINVAL);
-    if (av_pix_fmt_descriptors[pix_fmt].flags & PIX_FMT_PSEUDOPAL)
+    if (desc->flags & PIX_FMT_PSEUDOPAL)
         // do not include palette for these pseudo-paletted formats
         return width * height;
     return av_image_fill_arrays(data, linesize, NULL, pix_fmt, width, height, align);