mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avdevice/xcbgrab: check return values of xcb query functions
Fixes #7312, segmentation fault on close of X11 server xcb_query_pointer_reply() and xcb_get_geometry_reply() can return NULL if e.g. the X server closes or the connection is lost. This needs to be checked in order to cleanly exit, because the returned pointers are dereferenced later. Signed-off-by: Moritz Barsnick <barsnick@gmx.net> Reviewed-by: Andriy Gelman <andriy.gelman@gmail.com>
This commit is contained in:
parent
161d7f3fee
commit
2250dc4044
@ -425,7 +425,16 @@ static int xcbgrab_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
pc = xcb_query_pointer(c->conn, c->screen->root);
|
||||
gc = xcb_get_geometry(c->conn, c->screen->root);
|
||||
p = xcb_query_pointer_reply(c->conn, pc, NULL);
|
||||
if (!p) {
|
||||
av_log(s, AV_LOG_ERROR, "Failed to query xcb pointer\n");
|
||||
return AVERROR_EXTERNAL;
|
||||
}
|
||||
geo = xcb_get_geometry_reply(c->conn, gc, NULL);
|
||||
if (!geo) {
|
||||
av_log(s, AV_LOG_ERROR, "Failed to get xcb geometry\n");
|
||||
free(p);
|
||||
return AVERROR_EXTERNAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (c->follow_mouse && p->same_screen)
|
||||
|
Loading…
Reference in New Issue
Block a user