diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c
index 20a29d10f66019ba97eca321ffa13f1e1de5cb4e..2435c9c1d0eb7d1bccb758eaec57bfe256b7e2c0 100644
--- a/libavdevice/xcbgrab.c
+++ b/libavdevice/xcbgrab.c
@@ -602,6 +602,8 @@ static av_cold int xcbgrab_read_header(AVFormatContext *s)
     if (opts) {
         sscanf(opts, "%d,%d", &c->x, &c->y);
         host = av_strdup(s->filename);
+        if (!host)
+            return AVERROR(ENOMEM);
         host[opts - s->filename] = '\0';
     }