diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2015-03-05 11:44:55 +0300 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2015-03-08 16:39:01 +0300 |
commit | 5f5b78aca35d07c771f5c4c73a984be9fe04a0b8 (patch) | |
tree | 63145d1630bb57d254bfb83d70cdd6c972c1d8d7 /libavdevice | |
parent | 0025f7408a0fab2cab4a950064e4784a67463994 (diff) |
xcbgrab: Free the host string after checking the connection
Prevent an use after free in the error message.
Bug-Id: CID 1274040
CC: libav-stable@libav.org
Diffstat (limited to 'libavdevice')
-rw-r--r-- | libavdevice/xcbgrab.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavdevice/xcbgrab.c b/libavdevice/xcbgrab.c index c4db9837e8..20a29d10f6 100644 --- a/libavdevice/xcbgrab.c +++ b/libavdevice/xcbgrab.c @@ -607,14 +607,17 @@ static av_cold int xcbgrab_read_header(AVFormatContext *s) c->conn = xcb_connect(host, &screen_num); - if (opts) - av_free(host); - if ((ret = xcb_connection_has_error(c->conn))) { av_log(s, AV_LOG_ERROR, "Cannot open display %s, error %d.\n", s->filename[0] ? host : "default", ret); + if (opts) + av_freep(&host); return AVERROR(EIO); } + + if (opts) + av_freep(&host); + setup = xcb_get_setup(c->conn); c->screen = get_screen(setup, screen_num); |