~darxus/+junk/wayland-packaging

Viewing all changes in revision 1072.

  • Committer: Kristian Høgsberg
  • Author(s): David Herrmann
  • Date: 2012-09-11 01:44:47 UTC
  • Revision ID: git-v1:9fe135c46f2457d6dc694e4c02d2defeab6986b0
wayland-server: return new ID in wl_client_add_resource()

wl_client_add_resource() used to return no error even though the new
resource wasn't added to the client. This currently makes it very easy to
DOS weston by simply posting thousands of "create_surface" requests with
an invalid ID. Weston simply assumes the wl_client_add_resource() request
succeeds but will never destroy the surface again as the "destroy" signal
is never called (because the surface isn't linked into the wl_map).

This change makes wl_client_add_resource() return the new ID of the added
object and 0 on failure. Servers (like weston) can now correctly
immediately destroy the surface when this call fails instead of leaving
the surface around and producing memory-leaks.

Instead of returning -1 on failure and 0 on success, I made it return the
new ID as this seems more appropriate. We can directly use it when calling
it with new_id==0.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: