xserver-multidpi/dix
Kristian Høgsberg 6d7ba5e0fc dix: Update element count in FreeResource*()
FreeResource() keeps clientTable[cid].elements up to date with the
number of resources allocated to the client.  The other free
resource functions (FreeResourceByType(),
FreeClientNeverRetainResources() and FreeClientResources()) don't
maintain this invariant.

Typically, the only consequence is that the element count is too high
and we end up allocating the hash table bigger than necessary.  However,
FreeResource() also relies on the element count to restart the search if
the list of resources has been changed during a resource destruction
callback.  Since FreeResourceByType() doesn't update the count, if we call
that from a resource destruction callback from FreeResource(), the
loop isn't restarted and we end up following an invalid next pointer.

Furthermore, LookupClientResourceComplex() and
FreeClientNeverRetainResources() don't use the element count to detect
if a callback deleted a resource and may end up following an invalid
next pointer if the resource system is called into recursively.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2010-05-11 11:01:34 -04:00
..
.gitignore .gitignore: use common defaults with custom section #24239 2009-11-11 21:40:20 -08:00
atom.c Constify atom name strings 2009-02-03 10:06:00 -08:00
buildatoms XFree86 4.3.0.1 2003-11-14 16:49:22 +00:00
BuiltInAtoms R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
colormap.c dix: Fix up colormap fixup. 2009-10-23 09:46:30 +09:00
cursor.c dix/configure: remove null root cursor option 2010-01-27 21:28:57 -08:00
deprecated.c dix: remove dixLookupResource - we don't have any users left. 2009-09-07 10:51:16 +10:00
devices.c Fix cursor ref counting mistakes with sprites and xf86Cursor.c 2010-05-03 10:26:52 -07:00
dispatch.c Introduce dixLookupFontable for "FONT or GC" parameters. 2010-05-07 21:56:36 -07:00
dispatch.h Remove RCS tags. Fix Xprint makefile braindamage. 2006-07-21 17:56:00 -04:00
dixfonts.c New header for XF86Bigfont server functions 2010-03-22 00:48:04 -05:00
dixutils.c Introduce dixLookupFontable for "FONT or GC" parameters. 2010-05-07 21:56:36 -07:00
enterleave.c dix: call SetFocusOut and LeaveWindow when disabling a device. 2009-08-03 10:11:48 +10:00
enterleave.h dix: call SetFocusOut and LeaveWindow when disabling a device. 2009-08-03 10:11:48 +10:00
eventconvert.c dix: EventToCore needs to copy the root window too. 2010-01-27 14:38:16 -08:00
events.c Fix cursor ref counting mistakes with sprites and xf86Cursor.c 2010-05-03 10:26:52 -07:00
extension.c dix: be more verbose when we run out of opcodes 2010-04-07 16:15:37 -07:00
ffs.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
gc.c Simplify error-handling in dixChangeGC. 2010-05-10 11:16:33 -07:00
getevents.c dix: Clip only into axis ranges if we're in absolute mode. (#26543) 2010-03-10 09:30:19 +10:00
globals.c DPMS: Remove the defaultDPMS* variables 2009-04-03 18:22:20 -04:00
glyphcurs.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
grabs.c input: remove XI2 keysym grabs, use keycode grabs instead. 2009-07-22 12:12:51 +10:00
initatoms.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
inpututils.c Un-export ApplyPointerMapping. This is an in-server function. 2009-09-03 08:39:26 +10:00
main.c Merge remote branch 'vignatti/for-keith' 2010-04-30 12:27:51 -07:00
Makefile.am dtrace: Add Xserver-dtrace.h to CLEANFILES 2009-12-15 16:51:48 -08:00
pixmap.c Remove a bunch of useless casts. 2009-01-22 02:11:16 -05:00
privates.c dix: Fix a double free in dixFreePrivates. 2009-10-07 16:22:46 -07:00
property.c dix: don't return BadMatch from GetProperty (#23562) 2009-09-03 14:19:35 +10:00
protocol.txt Add DRI2 requests to protocol.txt 2009-08-28 23:29:05 -04:00
ptrveloc.c Replace some input devPrivates with regular struct fields 2010-04-30 13:05:11 -07:00
registry.c Cygwin/X: Tidy up some cosmetic issues in log strings 2010-03-16 13:55:20 +00:00
resource.c dix: Update element count in FreeResource*() 2010-05-11 11:01:34 -04:00
selection.c xserver: Avoid sending uninitialized padding data over the network 2009-02-16 13:28:38 +10:00
swaprep.c dix: switch to byte-counting functions. 2009-07-14 10:05:54 +10:00
swapreq.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
tables.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
window.c dix: wrap variables with #ifdef when panoramix is not used 2010-05-02 13:55:16 -07:00
Xserver-dtrace.h.in Update Sun license notices to current X.Org standard form 2009-12-16 17:11:35 -08:00
Xserver.d Update Sun license notices to current X.Org standard form 2009-12-16 17:11:35 -08:00