X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fxcb_conn.c;h=de5595126e0c530f33654652a5abe7bceca83714;hb=4e91ae275e46e76de64ab089d6f13c1e9b6ddee6;hp=9a7399e01a8ea7ec9479e9f3075e36db0003b99c;hpb=1b83f8f8f326eca9d8852c82dd36696f81a720dc;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/xcb_conn.c b/src/xcb_conn.c index 9a7399e..de55951 100644 --- a/src/xcb_conn.c +++ b/src/xcb_conn.c @@ -38,8 +38,9 @@ static int write_setup(XCBConnection *c, XCBAuthInfo *auth_info) { + static const char pad[3]; XCBConnSetupReq out; - struct iovec parts[3]; + struct iovec parts[6]; int count = 0; int endian = 0x01020304; int ret; @@ -57,14 +58,21 @@ static int write_setup(XCBConnection *c, XCBAuthInfo *auth_info) out.authorization_protocol_data_len = 0; parts[count].iov_len = sizeof(XCBConnSetupReq); parts[count++].iov_base = &out; + parts[count].iov_len = XCB_PAD(sizeof(XCBConnSetupReq)); + parts[count++].iov_base = (caddr_t) pad; if(auth_info) { parts[count].iov_len = out.authorization_protocol_name_len = auth_info->namelen; parts[count++].iov_base = auth_info->name; + parts[count].iov_len = XCB_PAD(out.authorization_protocol_name_len); + parts[count++].iov_base = (caddr_t) pad; parts[count].iov_len = out.authorization_protocol_data_len = auth_info->datalen; parts[count++].iov_base = auth_info->data; + parts[count].iov_len = XCB_PAD(out.authorization_protocol_data_len); + parts[count++].iov_base = (caddr_t) pad; } + assert(count <= sizeof(parts) / sizeof(*parts)); pthread_mutex_lock(&c->iolock); _xcb_out_write_block(c, parts, count);