forked from FFmpeg/FFmpeg
avdevice/xcbgrab: Handle reply and error properly
Fix a NULL dereference and leaks. Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
5ac8675cb1
commit
12bbfc4cca
1 changed files with 5 additions and 0 deletions
|
@ -168,6 +168,7 @@ static int xcbgrab_frame(AVFormatContext *s, AVPacket *pkt)
|
|||
"sequence:%u resource_id:%u minor_code:%u major_code:%u.\n",
|
||||
e->response_type, e->error_code,
|
||||
e->sequence, e->resource_id, e->minor_code, e->major_code);
|
||||
free(e);
|
||||
return AVERROR(EACCES);
|
||||
}
|
||||
|
||||
|
@ -276,6 +277,7 @@ static int xcbgrab_frame_shm(AVFormatContext *s, AVPacket *pkt)
|
|||
e->response_type, e->error_code,
|
||||
e->sequence, e->resource_id, e->minor_code, e->major_code);
|
||||
|
||||
free(e);
|
||||
return AVERROR(EACCES);
|
||||
}
|
||||
|
||||
|
@ -537,6 +539,8 @@ static int create_stream(AVFormatContext *s)
|
|||
|
||||
gc = xcb_get_geometry(c->conn, c->screen->root);
|
||||
geo = xcb_get_geometry_reply(c->conn, gc, NULL);
|
||||
if (!geo)
|
||||
return AVERROR_EXTERNAL;
|
||||
|
||||
if (c->x + c->width > geo->width ||
|
||||
c->y + c->height > geo->height) {
|
||||
|
@ -546,6 +550,7 @@ static int create_stream(AVFormatContext *s)
|
|||
c->width, c->height,
|
||||
c->x, c->y,
|
||||
geo->width, geo->height);
|
||||
free(geo);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue