xserver-multidpi/os
Aaron Plattner c80c41767e os: Fix BigReq ignoring when another request is pending
Commit cf88363db0 fixed the handling of
BigReq requests that are way too large and handles the case where the
read() syscall returns a short read.  However, it neglected to handle
the case where it returns a long read, which happens when the client
has another request in the queue after the bogus large one.

Handle the long read case by subtracting the smaller of 'needed' and
'gotnow' from oci->ignoreBytes.  If needed < gotnow, simply subtract
the two, leaving gotnow equal to the number of extra bytes read.
Since the code immediately following the (oci->ignoreBytes > 0) block
tries to handle the next request, advance oci->bufptr immediately
instead of setting oci->lenLastReq and letting the next call to
ReadRequestFromClient do it.

Fixes the XTS pChangeKeyboardMapping-3 test.

         CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN ABORT
-Xproto    122   389   367     2    19     0     0     0     1     0     0     0
+Xproto    122   389   368     2    19     0     0     0     0     0     0     0

Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-11-10 14:58:28 -08:00
..
.gitignore .gitignore: use common defaults with custom section #24239 2009-11-11 21:40:20 -08:00
access.c os: Clean up various xtrans bits that we've never supported 2010-10-15 16:50:23 -04:00
auth.c Constify function prototypes in auth & xdmcp code 2010-05-07 12:22:58 -07:00
backtrace.c Miscellaneous compilation warning fixes 2009-12-08 15:50:28 -08:00
connection.c os: Clean up various xtrans bits that we've never supported 2010-10-15 16:50:23 -04:00
io.c os: Fix BigReq ignoring when another request is pending 2010-11-10 14:58:28 -08:00
log.c Remove now-misleading comment 2010-10-25 03:35:56 +04:00
Makefile.am os: Prevent backtrace from being stopped in noreturn functions. 2010-03-25 06:03:43 +01:00
mitauth.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
oscolor.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
osdep.h os: Return BadLength instead of disconnecting BigReq clients (#4565) 2010-09-10 11:48:17 -07:00
osinit.c os: simplify smart scheduler init process 2010-09-10 21:49:29 +03:00
rpcauth.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
strcasecmp.c Remove unnecessary parentheses around return values in functions 2010-06-10 06:42:42 -07:00
strcasestr.c Remove unnecessary parentheses around return values in functions 2010-06-10 06:42:42 -07:00
strlcat.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
strlcpy.c Remove unnecessary parentheses around return values in functions 2010-06-10 06:42:42 -07:00
utils.c os: simplify smart scheduler init process 2010-09-10 21:49:29 +03:00
WaitFor.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xdmauth.c Replace deprecated bzero with memset 2010-06-06 15:07:27 +07:00
xdmcp.c os: Clean up various xtrans bits that we've never supported 2010-10-15 16:50:23 -04:00
xprintf.c Use lowercase variant of XNFalloc and Xstrdup 2010-05-13 00:22:37 +07:00
xsha1.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xstrans.c Change HAVE_CONFIG_H to HAVE_DIX_CONFIG_H. 2005-07-03 12:16:29 +00:00