summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Gräßlin <mgraesslin@kde.org>2015-03-17 18:41:07 +0100
committerMichael Stapelberg <michael@stapelberg.de>2015-03-22 17:11:47 +0100
commitcf26479ece9ab9e04616bc10ba674d88a284e5b0 (patch)
treeaaf151a996f9405dc88dfe0fa8e6f1e8aa4f83bc
parentf03cc278c6cce0cf721adf9c3764d3c5fba63392 (diff)
Perform safety check before trying to load glyph cursor
The passed in cursor name to xcb_cursor_load_cursor might not match one of the predefined font cursor values. Without the check the call to create glyph cursor will fail with a BadValue error, but the library returns the id allocated for the xcb_cursor_t. A user of the library gets a value which looks like a valid cursor, but when using it for e.g. a cursor value in xcb_create_window it raises a BadCursor error.
-rw-r--r--cursor/load_cursor.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/cursor/load_cursor.c b/cursor/load_cursor.c
index 914950a..53da009 100644
--- a/cursor/load_cursor.c
+++ b/cursor/load_cursor.c
@@ -207,6 +207,8 @@ xcb_cursor_t xcb_cursor_load_cursor(xcb_cursor_context_t *c, const char *name) {
if (fd == -1 || core_char > -1) {
if (core_char == -1)
core_char = cursor_shape_to_id(name);
+ if (core_char == -1)
+ return XCB_NONE;
cid = xcb_generate_id(c->conn);
xcb_create_glyph_cursor(c->conn, cid, c->cursor_font, c->cursor_font, core_char, core_char + 1, 0, 0, 0, 65535, 65535, 65535);