summaryrefslogtreecommitdiff
path: root/libavdevice
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2015-03-05 09:44:55 +0100
committerLuca Barbato <lu_zero@gentoo.org>2015-03-08 14:39:01 +0100
commit5f5b78aca35d07c771f5c4c73a984be9fe04a0b8 (patch)
tree63145d1630bb57d254bfb83d70cdd6c972c1d8d7 /libavdevice
parent0025f7408a0fab2cab4a950064e4784a67463994 (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.c9
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);