Hello community,

here is the log from the commit of package wayland for openSUSE:Factory checked 
in at 2019-03-22 14:52:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wayland (Old)
 and      /work/SRC/openSUSE:Factory/.wayland.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wayland"

Fri Mar 22 14:52:04 2019 rev:39 rq:687176 version:1.17.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/wayland/wayland.changes  2018-11-28 
11:11:13.983081364 +0100
+++ /work/SRC/openSUSE:Factory/.wayland.new.25356/wayland.changes       
2019-03-22 14:52:08.954140858 +0100
@@ -1,0 +2,8 @@
+Thu Mar 21 09:14:59 UTC 2019 - Jan Engelhardt <[email protected]>
+
+- Update to new upstream release 1.17
+  * There is now a protocol to express an internal server error
+    message, and a new version of the wl_seat protocol with no
+    changes other than keymaps must be private.
+
+-------------------------------------------------------------------

Old:
----
  wayland-1.16.0.tar.xz
  wayland-1.16.0.tar.xz.sig

New:
----
  wayland-1.17.0.tar.xz
  wayland-1.17.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ wayland.spec ++++++
--- /var/tmp/diff_new_pack.YGplJB/_old  2019-03-22 14:52:10.514139927 +0100
+++ /var/tmp/diff_new_pack.YGplJB/_new  2019-03-22 14:52:10.514139927 +0100
@@ -15,7 +15,7 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
-%define _version 1.16.0
+%define _version 1.17.0
 %if 0%{?suse_version} >= 1500 && 0%{?suse_version} < 1550
 %define eglversion 99~%_version
 %else

++++++ wayland-1.16.0.tar.xz -> wayland-1.17.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/CONTRIBUTING.md 
new/wayland-1.17.0/CONTRIBUTING.md
--- old/wayland-1.16.0/CONTRIBUTING.md  2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/CONTRIBUTING.md  2019-03-21 01:55:25.000000000 +0100
@@ -4,8 +4,46 @@
 Sending patches
 ---------------
 
-Patches should be sent to **[email protected]**, using
-`git send-email`. See [git documentation] for help.
+Patches should be sent via
+[GitLab merge 
requests](https://docs.gitlab.com/ce/gitlab-basics/add-merge-request.html).
+Wayland is
+[hosted on freedesktop.org's 
GitLab](https://gitlab.freedesktop.org/wayland/wayland/):
+in order to submit code, you should create an account on this GitLab instance,
+fork the core Wayland repository, push your changes to a branch in your new
+repository, and then submit these patches for review through a merge request.
+
+Wayland formerly accepted patches via `git-send-email`, sent to
+**[email protected]**; these were
+[tracked using Patchwork](https://patchwork.freedesktop.org/project/wayland/).
+Some old patches continue to be sent this way, and we may accept small new
+patches sent to the list, but please send all new patches through GitLab merge
+requests.
+
+
+Formatting and separating commits
+---------------------------------
+
+Unlike many projects using GitHub and GitLab, Wayland has a
+[linear, 'recipe' style 
history](http://www.bitsnbites.eu/git-history-work-log-vs-recipe/).
+This means that every commit should be small, digestible, stand-alone, and
+functional. Rather than a purely chronological commit history like this:
+
+    connection: plug a fd leak
+    plug another fd leak
+    connection: init fds to -1
+    close all fds
+    refactor checks into a new function
+    don't close fds we handed out
+
+we aim to have a clean history which only reflects the final state, broken up
+into functional groupings:
+
+    connection: Refactor out closure allocation
+    connection: Clear fds we shouldn't close to -1
+    connection: Make wl_closure_destroy() close fds of undispatched closures
+
+This ensures that the final patch series only contains the final state,
+without the changes and missteps taken along the development process.
 
 The first line of a commit message should contain a prefix indicating
 what part is affected by the patch followed by one sentence that
@@ -45,7 +83,7 @@
 
 When you re-send patches, revised or not, it would be very good to document the
 changes compared to the previous revision in the commit message and/or the
-cover letter. If you have already received Reviewed-by or Acked-by tags, you
+merge request. If you have already received Reviewed-by or Acked-by tags, you
 should evaluate whether they still apply and include them in the respective
 commit messages. Otherwise the tags may be lost, reviewers miss the credit they
 deserve, and the patches may cause redundant review effort.
@@ -54,78 +92,37 @@
 Tracking patches and following up
 ---------------------------------
 
-[Wayland Patchwork](http://patchwork.freedesktop.org/project/wayland/list/) is
-used for tracking patches to Wayland. Xwayland patches are tracked with the
-[Xorg project](https://patchwork.freedesktop.org/project/Xorg/list/)
-instead. Weston uses
-[GitLab merge 
requests](https://gitlab.freedesktop.org/wayland/weston/merge_requests)
-for code review, and does not use mailing list review at all.
-
-Libinput patches, even though they use the same mailing list as
-Wayland, are not tracked in the Wayland Patchwork.
-
-The following applies only to Wayland.
-
-If a patch is not found in Patchwork, there is a high possibility for it to be
-forgotten. Patches attached to bug reports or not arriving to the mailing list
-because of e.g. subscription issues will not be in Patchwork because Patchwork
-only collects patches sent to the list.
-
-When you send a revised version of a patch, it would be very nice to mark your
-old patch as superseded (or rejected, if that is applicable). You can change
-the status of your own patches by registering to Patchwork - ownership is
-identified by email address you use to register. Updating your patch status
-appropriately will help maintainer work.
-
-The following patch states are found in Patchwork:
-
-- **New**:
-    Patches under discussion or not yet processed.
-
-- **Under review**:
-    Mostly unused state.
-
-- **Accepted**:
-    The patch is merged in the master branch upstream, as is or slightly
-    modified.
-
-- **Rejected**:
-    The idea or approach is rejected and cannot be fixed by revising
-    the patch.
-
-- **RFC**:
-    Request for comments, not meant to be merged as is.
-
-- **Not applicable**:
-    The email was not actually a patch, or the patch is not for Wayland.
-    Libinput patches are usually automatically ignored by Wayland
-    Patchwork, but if they get through, they will be marked as Not
-    applicable.
-
-- **Changes requested**:
-    Reviewers determined that changes to the patch are needed. The
-    submitter is expected to send a revised version. (You should
-    not wait for your patch to be set to this state before revising,
-    though.)
-
-- **Awaiting upstream**:
-    Mostly unused as the patch is waiting for upstream actions but
-    is not shown in the default list, which means it is easy to
-    overlook.
-
-- **Superseded**:
-    A revised version of the patch has been submitted.
-
-- **Deferred**:
-    Used mostly during freeze periods before releases, to temporarily
-    hide patches that cannot be merged during a freeze.
-
-Note, that in the default listing, only patches in *New* or *Under review* are
-shown.
-
-There is also a command line interface to Patchwork called `pwclient`, see
-http://patchwork.freedesktop.org/project/wayland/
-for links where to get it and the sample `.pwclientrc` for Wayland.
+Once submitted to GitLab, your patches will be reviewed by the Wayland
+development team on GitLab. Review may be entirely positive and result in your
+code landing instantly, in which case, great! You're done. However, we may ask
+you to make some revisions: fixing some bugs we've noticed, working to a
+slightly different design, or adding documentation and tests.
+
+If you do get asked to revise the patches, please bear in mind the notes above.
+You should use `git rebase -i` to make revisions, so that your patches follow
+the clear linear split documented above. Following that split makes it easier
+for reviewers to understand your work, and to verify that the code you're
+submitting is correct.
+
+A common request is to split single large patch into multiple patches. This can
+happen, for example, if when adding a new feature you notice a bug elsewhere
+which you need to fix to progress. Separating these changes into separate
+commits will allow us to verify and land the bugfix quickly, pushing part of
+your work for the good of everyone, whilst revision and discussion continues on
+the larger feature part. It also allows us to direct you towards reviewers who
+best understand the different areas you are working on.
+
+When you have made any requested changes, please rebase the commits, verify
+that they still individually look good, then force-push your new branch to
+GitLab. This will update the merge request and notify everyone subscribed to
+your merge request, so they can review it again.
+
+There are also
+[many GitLab CLI clients](https://about.gitlab.com/applications/#cli-clients),
+if you prefer to avoid the web interface. It may be difficult to follow review
+comments without using the web interface though, so we do recommend using this
+to go through the review process, even if you use other clients to track the
+list of available patches.
 
 
 Coding style
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/Makefile.am 
new/wayland-1.17.0/Makefile.am
--- old/wayland-1.16.0/Makefile.am      2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/Makefile.am      2019-03-21 01:55:25.000000000 +0100
@@ -210,12 +210,15 @@
        exec-fd-leak-checker                    \
        fixed-benchmark
 
-noinst_LTLIBRARIES += libtest-runner.la
+noinst_LTLIBRARIES +=                          \
+       libtest-runner.la                       \
+       libtest-helpers.la
+
+libtest_helpers_la_SOURCES = tests/test-helpers.c
 
 libtest_runner_la_SOURCES =                    \
        tests/test-runner.c                     \
        tests/test-runner.h                     \
-       tests/test-helpers.c                    \
        tests/test-compositor.h                 \
        tests/test-compositor.c
 libtest_runner_la_LIBADD =                     \
@@ -223,9 +226,9 @@
        libwayland-util.la                      \
        libwayland-client.la                    \
        libwayland-server.la                    \
+       libtest-helpers.la                      \
        -lrt -ldl $(FFI_LIBS)
 
-
 array_test_SOURCES = tests/array-test.c
 array_test_LDADD = libtest-runner.la
 client_test_SOURCES = tests/client-test.c
@@ -270,7 +273,6 @@
 headers_test_SOURCES = tests/headers-test.c \
                       tests/headers-protocol-test.c \
                       tests/headers-protocol-core-test.c
-headers_test_LDADD = libtest-runner.la
 nodist_headers_test_SOURCES =                  \
        protocol/wayland-server-protocol-core.h \
        protocol/wayland-client-protocol-core.h
@@ -280,13 +282,12 @@
 endif
 
 fixed_benchmark_SOURCES = tests/fixed-benchmark.c
-fixed_benchmark_LDADD = libtest-runner.la
 
 os_wrappers_test_SOURCES = tests/os-wrappers-test.c
 os_wrappers_test_LDADD = libtest-runner.la
 
 exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c
-exec_fd_leak_checker_LDADD = libtest-runner.la
+exec_fd_leak_checker_LDADD = libtest-helpers.la
 
 EXTRA_DIST += tests/scanner-test.sh                    \
        protocol/tests.xml                              \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/Makefile.in 
new/wayland-1.17.0/Makefile.in
--- old/wayland-1.16.0/Makefile.in      2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/Makefile.in      2019-03-21 01:55:29.000000000 +0100
@@ -94,7 +94,7 @@
 bin_PROGRAMS = wayland-scanner$(EXEEXT)
 @DTD_VALIDATION_TRUE@am__append_1 = src/dtddata.S
 @ENABLE_LIBRARIES_TRUE@am__append_2 = libwayland-private.la \
-@ENABLE_LIBRARIES_TRUE@        libtest-runner.la
+@ENABLE_LIBRARIES_TRUE@        libtest-runner.la libtest-helpers.la
 @ENABLE_LIBRARIES_TRUE@am__append_3 = src/wayland-client.pc \
 @ENABLE_LIBRARIES_TRUE@        src/wayland-server.pc \
 @ENABLE_LIBRARIES_TRUE@        cursor/wayland-cursor.pc \
@@ -165,25 +165,30 @@
        "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" \
        "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+libtest_helpers_la_LIBADD =
+am__libtest_helpers_la_SOURCES_DIST = tests/test-helpers.c
+am__dirstamp = $(am__leading_dot)dirstamp
+@ENABLE_LIBRARIES_TRUE@am_libtest_helpers_la_OBJECTS =  \
+@ENABLE_LIBRARIES_TRUE@        tests/test-helpers.lo
+libtest_helpers_la_OBJECTS = $(am_libtest_helpers_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+@ENABLE_LIBRARIES_TRUE@am_libtest_helpers_la_rpath =
 am__DEPENDENCIES_1 =
 @ENABLE_LIBRARIES_TRUE@libtest_runner_la_DEPENDENCIES =  \
 @ENABLE_LIBRARIES_TRUE@        libwayland-private.la \
 @ENABLE_LIBRARIES_TRUE@        libwayland-util.la libwayland-client.la \
-@ENABLE_LIBRARIES_TRUE@        libwayland-server.la \
+@ENABLE_LIBRARIES_TRUE@        libwayland-server.la libtest-helpers.la \
 @ENABLE_LIBRARIES_TRUE@        $(am__DEPENDENCIES_1)
 am__libtest_runner_la_SOURCES_DIST = tests/test-runner.c \
-       tests/test-runner.h tests/test-helpers.c \
-       tests/test-compositor.h tests/test-compositor.c
-am__dirstamp = $(am__leading_dot)dirstamp
+       tests/test-runner.h tests/test-compositor.h \
+       tests/test-compositor.c
 @ENABLE_LIBRARIES_TRUE@am_libtest_runner_la_OBJECTS =  \
 @ENABLE_LIBRARIES_TRUE@        tests/test-runner.lo \
-@ENABLE_LIBRARIES_TRUE@        tests/test-helpers.lo \
 @ENABLE_LIBRARIES_TRUE@        tests/test-compositor.lo
 libtest_runner_la_OBJECTS = $(am_libtest_runner_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
 @ENABLE_LIBRARIES_TRUE@am_libtest_runner_la_rpath =
 @ENABLE_LIBRARIES_TRUE@libwayland_client_la_DEPENDENCIES =  \
 @ENABLE_LIBRARIES_TRUE@        $(am__DEPENDENCIES_1) \
@@ -331,13 +336,12 @@
 @ENABLE_LIBRARIES_TRUE@        tests/exec-fd-leak-checker.$(OBJEXT)
 exec_fd_leak_checker_OBJECTS = $(am_exec_fd_leak_checker_OBJECTS)
 @ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_DEPENDENCIES =  \
-@ENABLE_LIBRARIES_TRUE@        libtest-runner.la
+@ENABLE_LIBRARIES_TRUE@        libtest-helpers.la
 am__fixed_benchmark_SOURCES_DIST = tests/fixed-benchmark.c
 @ENABLE_LIBRARIES_TRUE@am_fixed_benchmark_OBJECTS =  \
 @ENABLE_LIBRARIES_TRUE@        tests/fixed-benchmark.$(OBJEXT)
 fixed_benchmark_OBJECTS = $(am_fixed_benchmark_OBJECTS)
-@ENABLE_LIBRARIES_TRUE@fixed_benchmark_DEPENDENCIES =  \
-@ENABLE_LIBRARIES_TRUE@        libtest-runner.la
+fixed_benchmark_LDADD = $(LDADD)
 am__fixed_test_SOURCES_DIST = tests/fixed-test.c
 @ENABLE_LIBRARIES_TRUE@am_fixed_test_OBJECTS =  \
 @ENABLE_LIBRARIES_TRUE@        tests/fixed-test.$(OBJEXT)
@@ -353,7 +357,7 @@
 nodist_headers_test_OBJECTS =
 headers_test_OBJECTS = $(am_headers_test_OBJECTS) \
        $(nodist_headers_test_OBJECTS)
-@ENABLE_LIBRARIES_TRUE@headers_test_DEPENDENCIES = libtest-runner.la
+headers_test_LDADD = $(LDADD)
 am__interface_test_SOURCES_DIST = tests/interface-test.c
 @ENABLE_LIBRARIES_TRUE@am_interface_test_OBJECTS =  \
 @ENABLE_LIBRARIES_TRUE@        tests/interface-test.$(OBJEXT)
@@ -498,7 +502,8 @@
 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
-SOURCES = $(libtest_runner_la_SOURCES) $(libwayland_client_la_SOURCES) \
+SOURCES = $(libtest_helpers_la_SOURCES) $(libtest_runner_la_SOURCES) \
+       $(libwayland_client_la_SOURCES) \
        $(nodist_libwayland_client_la_SOURCES) \
        $(libwayland_cursor_la_SOURCES) $(libwayland_egl_la_SOURCES) \
        $(libwayland_private_la_SOURCES) \
@@ -519,7 +524,8 @@
        $(resources_test_SOURCES) $(sanity_test_SOURCES) \
        $(signal_test_SOURCES) $(socket_test_SOURCES) \
        $(wayland_egl_abi_check_SOURCES) $(wayland_scanner_SOURCES)
-DIST_SOURCES = $(am__libtest_runner_la_SOURCES_DIST) \
+DIST_SOURCES = $(am__libtest_helpers_la_SOURCES_DIST) \
+       $(am__libtest_runner_la_SOURCES_DIST) \
        $(am__libwayland_client_la_SOURCES_DIST) \
        $(am__libwayland_cursor_la_SOURCES_DIST) \
        $(am__libwayland_egl_la_SOURCES_DIST) \
@@ -1111,10 +1117,10 @@
 @ENABLE_LIBRARIES_TRUE@        NM='$(NM)'                                      
                \
 @ENABLE_LIBRARIES_TRUE@        ;
 
+@ENABLE_LIBRARIES_TRUE@libtest_helpers_la_SOURCES = tests/test-helpers.c
 @ENABLE_LIBRARIES_TRUE@libtest_runner_la_SOURCES = \
 @ENABLE_LIBRARIES_TRUE@        tests/test-runner.c                     \
 @ENABLE_LIBRARIES_TRUE@        tests/test-runner.h                     \
-@ENABLE_LIBRARIES_TRUE@        tests/test-helpers.c                    \
 @ENABLE_LIBRARIES_TRUE@        tests/test-compositor.h                 \
 @ENABLE_LIBRARIES_TRUE@        tests/test-compositor.c
 
@@ -1123,6 +1129,7 @@
 @ENABLE_LIBRARIES_TRUE@        libwayland-util.la                      \
 @ENABLE_LIBRARIES_TRUE@        libwayland-client.la                    \
 @ENABLE_LIBRARIES_TRUE@        libwayland-server.la                    \
+@ENABLE_LIBRARIES_TRUE@        libtest-helpers.la                      \
 @ENABLE_LIBRARIES_TRUE@        -lrt -ldl $(FFI_LIBS)
 
 @ENABLE_LIBRARIES_TRUE@array_test_SOURCES = tests/array-test.c
@@ -1171,18 +1178,16 @@
 @ENABLE_LIBRARIES_TRUE@                       tests/headers-protocol-test.c \
 @ENABLE_LIBRARIES_TRUE@                       
tests/headers-protocol-core-test.c
 
-@ENABLE_LIBRARIES_TRUE@headers_test_LDADD = libtest-runner.la
 @ENABLE_LIBRARIES_TRUE@nodist_headers_test_SOURCES = \
 @ENABLE_LIBRARIES_TRUE@        protocol/wayland-server-protocol-core.h \
 @ENABLE_LIBRARIES_TRUE@        protocol/wayland-client-protocol-core.h
 
 @ENABLE_CPP_TEST_TRUE@@ENABLE_LIBRARIES_TRUE@cpp_compile_test_SOURCES = 
tests/cpp-compile-test.cpp
 @ENABLE_LIBRARIES_TRUE@fixed_benchmark_SOURCES = tests/fixed-benchmark.c
-@ENABLE_LIBRARIES_TRUE@fixed_benchmark_LDADD = libtest-runner.la
 @ENABLE_LIBRARIES_TRUE@os_wrappers_test_SOURCES = tests/os-wrappers-test.c
 @ENABLE_LIBRARIES_TRUE@os_wrappers_test_LDADD = libtest-runner.la
 @ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_SOURCES = 
tests/exec-fd-leak-checker.c
-@ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_LDADD = libtest-runner.la
+@ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_LDADD = libtest-helpers.la
 all: $(BUILT_SOURCES) config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -1310,10 +1315,13 @@
 tests/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) tests/$(DEPDIR)
        @: > tests/$(DEPDIR)/$(am__dirstamp)
-tests/test-runner.lo: tests/$(am__dirstamp) \
-       tests/$(DEPDIR)/$(am__dirstamp)
 tests/test-helpers.lo: tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
+
+libtest-helpers.la: $(libtest_helpers_la_OBJECTS) 
$(libtest_helpers_la_DEPENDENCIES) $(EXTRA_libtest_helpers_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(am_libtest_helpers_la_rpath) 
$(libtest_helpers_la_OBJECTS) $(libtest_helpers_la_LIBADD) $(LIBS)
+tests/test-runner.lo: tests/$(am__dirstamp) \
+       tests/$(DEPDIR)/$(am__dirstamp)
 tests/test-compositor.lo: tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/TODO new/wayland-1.17.0/TODO
--- old/wayland-1.16.0/TODO     2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/TODO     2019-03-21 01:55:25.000000000 +0100
@@ -102,9 +102,6 @@
 
  - Investigate DirectFB on Wayland (or is that Wayland on DirectFB?)
 
- - SDL port, bnf has work in progress here:
-   http://cgit.freedesktop.org/~bnf/sdl-wayland/
-
 
 Ideas
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/compile new/wayland-1.17.0/compile
--- old/wayland-1.16.0/compile  2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/compile  2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
 scriptversion=2016-01-11.22; # UTC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/config.guess 
new/wayland-1.17.0/config.guess
--- old/wayland-1.16.0/config.guess     2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/config.guess     2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2017 Free Software Foundation, Inc.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/config.sub 
new/wayland-1.17.0/config.sub
--- old/wayland-1.16.0/config.sub       2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/config.sub       2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # Configuration validation subroutine script.
 #   Copyright 1992-2017 Free Software Foundation, Inc.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/configure new/wayland-1.17.0/configure
--- old/wayland-1.16.0/configure        2018-08-24 20:04:40.000000000 +0200
+++ new/wayland-1.17.0/configure        2019-03-21 01:55:29.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for wayland 1.16.0.
+# Generated by GNU Autoconf 2.69 for wayland 1.17.0.
 #
 # Report bugs to <https://gitlab.freedesktop.org/wayland/wayland/issues/>.
 #
@@ -651,8 +651,8 @@
 # Identity of this package.
 PACKAGE_NAME='wayland'
 PACKAGE_TARNAME='wayland'
-PACKAGE_VERSION='1.16.0'
-PACKAGE_STRING='wayland 1.16.0'
+PACKAGE_VERSION='1.17.0'
+PACKAGE_STRING='wayland 1.17.0'
 PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/wayland/wayland/issues/'
 PACKAGE_URL='https://wayland.freedesktop.org/'
 
@@ -1442,7 +1442,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures wayland 1.16.0 to adapt to many kinds of systems.
+\`configure' configures wayland 1.17.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1512,7 +1512,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of wayland 1.16.0:";;
+     short | recursive ) echo "Configuration of wayland 1.17.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1649,7 +1649,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-wayland configure 1.16.0
+wayland configure 1.17.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2185,7 +2185,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by wayland $as_me 1.16.0, which was
+It was created by wayland $as_me 1.17.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2536,11 +2536,11 @@
 
 WAYLAND_VERSION_MAJOR=1
 
-WAYLAND_VERSION_MINOR=16
+WAYLAND_VERSION_MINOR=17
 
 WAYLAND_VERSION_MICRO=0
 
-WAYLAND_VERSION=1.16.0
+WAYLAND_VERSION=1.17.0
 
 
 ac_config_headers="$ac_config_headers config.h"
@@ -3062,7 +3062,7 @@
 
 # Define the identity of the package.
  PACKAGE='wayland'
- VERSION='1.16.0'
+ VERSION='1.17.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17584,7 +17584,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by wayland $as_me 1.16.0, which was
+This file was extended by wayland $as_me 1.17.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17655,7 +17655,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-wayland config.status 1.16.0
+wayland config.status 1.17.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/configure.ac 
new/wayland-1.17.0/configure.ac
--- old/wayland-1.16.0/configure.ac     2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/configure.ac     2019-03-21 01:55:25.000000000 +0100
@@ -1,7 +1,7 @@
 AC_PREREQ([2.64])
 
 m4_define([wayland_major_version],  [1])
-m4_define([wayland_minor_version], [16])
+m4_define([wayland_minor_version], [17])
 m4_define([wayland_micro_version],  [0])
 m4_define([wayland_version],
           [wayland_major_version.wayland_minor_version.wayland_micro_version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/depcomp new/wayland-1.17.0/depcomp
--- old/wayland-1.16.0/depcomp  2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/depcomp  2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
 scriptversion=2016-01-11.22; # UTC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/doc/publican/Makefile.in 
new/wayland-1.17.0/doc/publican/Makefile.in
--- old/wayland-1.16.0/doc/publican/Makefile.in 2018-08-24 20:04:41.000000000 
+0200
+++ new/wayland-1.17.0/doc/publican/Makefile.in 2019-03-21 01:55:29.000000000 
+0100
@@ -464,12 +464,12 @@
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-@HAVE_XMLTO_FALSE@install-data-local:
-@HAVE_XSLTPROC_FALSE@install-data-local:
-@HAVE_XMLTO_FALSE@uninstall-local:
-@HAVE_XSLTPROC_FALSE@uninstall-local:
 @HAVE_XMLTO_FALSE@clean-local:
 @HAVE_XSLTPROC_FALSE@clean-local:
+@HAVE_XMLTO_FALSE@uninstall-local:
+@HAVE_XSLTPROC_FALSE@uninstall-local:
+@HAVE_XMLTO_FALSE@install-data-local:
+@HAVE_XSLTPROC_FALSE@install-data-local:
 clean: clean-am
 
 clean-am: clean-generic clean-libtool clean-local mostlyclean-am
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/ltmain.sh new/wayland-1.17.0/ltmain.sh
--- old/wayland-1.16.0/ltmain.sh        2018-08-24 20:04:39.000000000 +0200
+++ new/wayland-1.17.0/ltmain.sh        2019-03-21 01:55:27.000000000 +0100
@@ -7272,10 +7272,12 @@
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time 
optimization
+      # -specs=*             GCC specs files
       # -stdlib=*            select c++ std lib with clang
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
+      
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*)
         func_quote_for_eval "$arg"
        arg=$func_quote_for_eval_result
         func_append compile_command " $arg"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/missing new/wayland-1.17.0/missing
--- old/wayland-1.16.0/missing  2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/missing  2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
 scriptversion=2016-01-11.22; # UTC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/protocol/wayland.xml 
new/wayland-1.17.0/protocol/wayland.xml
--- old/wayland-1.16.0/protocol/wayland.xml     2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/protocol/wayland.xml     2019-03-21 01:55:25.000000000 
+0100
@@ -94,6 +94,8 @@
             summary="method doesn't exist on the specified interface"/>
       <entry name="no_memory" value="2"
             summary="server is out of memory"/>
+      <entry name="implementation" value="3"
+            summary="implementation error in compositor"/>
     </enum>
 
     <event name="delete_id">
@@ -1397,9 +1399,9 @@
        and clears pending damage. The server will clear the current
        damage as it repaints the surface.
 
-       Alternatively, damage can be posted with wl_surface.damage_buffer
-       which uses buffer coordinates instead of surface coordinates,
-       and is probably the preferred and intuitive way of doing this.
+       Note! New clients should not use this request. Instead damage can be
+       posted with wl_surface.damage_buffer which uses buffer coordinates
+       instead of surface coordinates.
       </description>
       <arg name="x" type="int" summary="surface-local x coordinate"/>
       <arg name="y" type="int" summary="surface-local y coordinate"/>
@@ -1660,7 +1662,7 @@
     </request>
    </interface>
 
-  <interface name="wl_seat" version="6">
+  <interface name="wl_seat" version="7">
     <description summary="group of input devices">
       A seat is a group of keyboards, pointer and touch devices. This
       object is published as a global during start up, or when such a
@@ -1769,7 +1771,7 @@
 
   </interface>
 
-  <interface name="wl_pointer" version="6">
+  <interface name="wl_pointer" version="7">
     <description summary="pointer input device">
       The wl_pointer interface represents one or more input devices,
       such as mice, which control the pointer location and pointer_focus
@@ -2092,7 +2094,7 @@
     </event>
   </interface>
 
-  <interface name="wl_keyboard" version="6">
+  <interface name="wl_keyboard" version="7">
     <description summary="keyboard input device">
       The wl_keyboard interface represents one or more keyboards
       associated with a seat.
@@ -2113,6 +2115,9 @@
       <description summary="keyboard mapping">
        This event provides a file descriptor to the client which can be
        memory-mapped to provide a keyboard mapping description.
+
+       From version 7 onwards, the fd must be mapped with MAP_PRIVATE by
+       the recipient, as MAP_SHARED may fail.
       </description>
       <arg name="format" type="uint" enum="keymap_format" summary="keymap 
format"/>
       <arg name="fd" type="fd" summary="keymap file descriptor"/>
@@ -2203,7 +2208,7 @@
     </event>
   </interface>
 
-  <interface name="wl_touch" version="6">
+  <interface name="wl_touch" version="7">
     <description summary="touchscreen input device">
       The wl_touch interface represents a touchscreen
       associated with a seat.
@@ -2402,6 +2407,13 @@
 
        The physical size can be set to zero if it doesn't make sense for this
        output (e.g. for projectors or virtual outputs).
+
+       Note: wl_output only advertises partial information about the output
+       position and identification. Some compositors, for instance those not
+       implementing a desktop-style output layout or those exposing virtual
+       outputs, might fake this information. Instead of using x and y, clients
+       should use xdg_output.logical_position. Instead of using make and model,
+       clients should use xdg_output.name and xdg_output.description.
       </description>
       <arg name="x" type="int"
           summary="x position within the global compositor space"/>
@@ -2446,7 +2458,17 @@
        the output device. This is not necessarily the same as
        the output size in the global compositor space. For instance,
        the output may be scaled, as described in wl_output.scale,
-       or transformed, as described in wl_output.transform.
+       or transformed, as described in wl_output.transform. Clients
+       willing to retrieve the output size in the global compositor
+       space should use xdg_output.logical_size instead.
+
+       Clients should not use the refresh rate to schedule frames. Instead,
+       they should use the wl_surface.frame event or the presentation-time
+       protocol.
+
+       Note: this information is not always meaningful for all outputs. Some
+       compositors, such as those exposing virtual outputs, might fake the
+       refresh rate or the size.
       </description>
       <arg name="flags" type="uint" enum="mode" summary="bitfield of mode 
flags"/>
       <arg name="width" type="int" summary="width of the mode in hardware 
units"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/connection.c 
new/wayland-1.17.0/src/connection.c
--- old/wayland-1.16.0/src/connection.c 2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/src/connection.c 2019-03-21 01:55:25.000000000 +0100
@@ -695,6 +695,14 @@
        struct wl_closure *closure;
        struct wl_array *array_extra;
 
+       /* Space for sender_id and opcode */
+       if (size < 2 * sizeof *p) {
+               wl_log("message too short, invalid header\n");
+               wl_connection_consume(connection, size);
+               errno = EINVAL;
+               return NULL;
+       }
+
        closure = wl_closure_init(message, size, &num_arrays, NULL);
        if (closure == NULL) {
                wl_connection_consume(connection, size);
@@ -1278,7 +1286,10 @@
                                wl_fixed_to_double(closure->args[i].f));
                        break;
                case 's':
-                       fprintf(stderr, "\"%s\"", closure->args[i].s);
+                       if (closure->args[i].s)
+                               fprintf(stderr, "\"%s\"", closure->args[i].s);
+                       else
+                               fprintf(stderr, "nil");
                        break;
                case 'o':
                        if (closure->args[i].o)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/scanner.c 
new/wayland-1.17.0/src/scanner.c
--- old/wayland-1.16.0/src/scanner.c    2018-08-24 20:04:36.000000000 +0200
+++ new/wayland-1.17.0/src/scanner.c    2019-03-21 01:55:25.000000000 +0100
@@ -35,7 +35,6 @@
 #include <string.h>
 #include <errno.h>
 #include <ctype.h>
-#include <expat.h>
 #include <getopt.h>
 #include <limits.h>
 #include <unistd.h>
@@ -48,6 +47,10 @@
 extern int DTD_DATA_len;
 #endif
 
+/* Expat must be included after libxml as both want to declare XMLCALL; see
+ * the Git commit that 'git blame' for this comment points to for more. */
+#include <expat.h>
+
 #include "wayland-util.h"
 
 #define PROGRAM_NAME "wayland-scanner"
@@ -133,6 +136,7 @@
        rc = xmlValidateDtd(dtdctx, doc, dtd);
        xmlFreeDoc(doc);
        xmlFreeParserCtxt(ctx);
+       xmlFreeDtd(dtd);
        xmlFreeValidCtxt(dtdctx);
        /* xmlIOParseDTD consumes buffer */
 
@@ -370,7 +374,7 @@
        putchar('\n');
 }
 
-static void
+static void __attribute__ ((noreturn))
 fail(struct location *loc, const char *msg, ...)
 {
        va_list ap;
@@ -432,6 +436,7 @@
        free(arg->name);
        free(arg->interface_name);
        free(arg->summary);
+       free(arg->enumeration_name);
        free(arg);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/wayland-client.c 
new/wayland-1.17.0/src/wayland-client.c
--- old/wayland-1.16.0/src/wayland-client.c     2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/src/wayland-client.c     2019-03-21 01:55:25.000000000 
+0100
@@ -185,6 +185,9 @@
                case WL_DISPLAY_ERROR_NO_MEMORY:
                        err = ENOMEM;
                        break;
+               case WL_DISPLAY_ERROR_IMPLEMENTATION:
+                       err = EPROTO;
+                       break;
                default:
                        err = EFAULT;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/wayland-server-core.h 
new/wayland-1.17.0/src/wayland-server-core.h
--- old/wayland-1.16.0/src/wayland-server-core.h        2018-08-24 
20:04:36.000000000 +0200
+++ new/wayland-1.17.0/src/wayland-server-core.h        2019-03-21 
01:55:25.000000000 +0100
@@ -325,6 +325,10 @@
 wl_client_post_no_memory(struct wl_client *client);
 
 void
+wl_client_post_implementation_error(struct wl_client *client,
+                                    const char* msg, ...) WL_PRINTF(2,3);
+
+void
 wl_client_add_resource_created_listener(struct wl_client *client,
                                         struct wl_listener *listener);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/wayland-server.c 
new/wayland-1.17.0/src/wayland-server.c
--- old/wayland-1.16.0/src/wayland-server.c     2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/src/wayland-server.c     2019-03-21 01:55:25.000000000 
+0100
@@ -273,17 +273,14 @@
        wl_resource_queue_event_array(resource, opcode, args);
 }
 
-WL_EXPORT void
-wl_resource_post_error(struct wl_resource *resource,
-                      uint32_t code, const char *msg, ...)
+static void
+wl_resource_post_error_vargs(struct wl_resource *resource,
+                            uint32_t code, const char *msg, va_list argp)
 {
        struct wl_client *client = resource->client;
        char buffer[128];
-       va_list ap;
 
-       va_start(ap, msg);
-       vsnprintf(buffer, sizeof buffer, msg, ap);
-       va_end(ap);
+       vsnprintf(buffer, sizeof buffer, msg, argp);
 
        /*
         * When a client aborts, its resources are destroyed in id order,
@@ -298,6 +295,18 @@
        wl_resource_post_event(client->display_resource,
                               WL_DISPLAY_ERROR, resource, code, buffer);
        client->error = 1;
+
+}
+
+WL_EXPORT void
+wl_resource_post_error(struct wl_resource *resource,
+                      uint32_t code, const char *msg, ...)
+{
+       va_list ap;
+
+       va_start(ap, msg);
+       wl_resource_post_error_vargs(resource, code, msg, ap);
+       va_end(ap);
 }
 
 static void
@@ -641,6 +650,30 @@
                               WL_DISPLAY_ERROR_NO_MEMORY, "no memory");
 }
 
+/** Report an internal server error
+ *
+ * \param client The client object
+ * \param msg A printf-style format string
+ * \param ... Format string arguments
+ *
+ * Report an unspecified internal implementation error and disconnect
+ * the client.
+ *
+ * \memberof wl_client
+ */
+WL_EXPORT void
+wl_client_post_implementation_error(struct wl_client *client,
+                                   char const *msg, ...)
+{
+       va_list ap;
+
+       va_start(ap, msg);
+       wl_resource_post_error_vargs(client->display_resource,
+                                    WL_DISPLAY_ERROR_IMPLEMENTATION,
+                                    msg, ap);
+       va_end(ap);
+}
+
 WL_EXPORT void
 wl_resource_post_no_memory(struct wl_resource *resource)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/wayland-util.h 
new/wayland-1.17.0/src/wayland-util.h
--- old/wayland-1.16.0/src/wayland-util.h       2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/src/wayland-util.h       2019-03-21 01:55:25.000000000 
+0100
@@ -68,6 +68,20 @@
 #define WL_PRINTF(x, y)
 #endif
 
+/** \class wl_object
+ *
+ * \brief A protocol object.
+ *
+ * A `wl_object` is an opaque struct identifying the protocol object
+ * underlying a `wl_proxy` or `wl_resource`.
+ *
+ * \note Functions accessing a `wl_object` are not normally used by client 
code.
+ * Clients should normally use the higher level interface generated by the
+ * scanner to interact with compositor objects.
+ *
+ */
+struct wl_object;
+
 /**
  * Protocol message signature
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/src/wayland-version.h 
new/wayland-1.17.0/src/wayland-version.h
--- old/wayland-1.16.0/src/wayland-version.h    2018-08-24 20:04:43.000000000 
+0200
+++ new/wayland-1.17.0/src/wayland-version.h    2019-03-21 01:55:31.000000000 
+0100
@@ -27,8 +27,8 @@
 #define WAYLAND_VERSION_H
 
 #define WAYLAND_VERSION_MAJOR 1
-#define WAYLAND_VERSION_MINOR 16
+#define WAYLAND_VERSION_MINOR 17
 #define WAYLAND_VERSION_MICRO 0
-#define WAYLAND_VERSION "1.16.0"
+#define WAYLAND_VERSION "1.17.0"
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/test-driver 
new/wayland-1.17.0/test-driver
--- old/wayland-1.16.0/test-driver      2018-08-24 20:04:41.000000000 +0200
+++ new/wayland-1.17.0/test-driver      2019-03-21 01:55:29.000000000 +0100
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
 # test-driver - basic testsuite driver script.
 
 scriptversion=2016-01-11.22; # UTC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/connection-test.c 
new/wayland-1.17.0/tests/connection-test.c
--- old/wayland-1.16.0/tests/connection-test.c  2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/connection-test.c  2019-03-21 01:55:25.000000000 
+0100
@@ -752,3 +752,90 @@
 
        display_destroy(d);
 }
+
+/** Raw read from socket expecting wl_display.error
+ *
+ * \param sockfd The socket to read from.
+ * \param expected_error The expected wl_display error code.
+ *
+ * Reads the socket and manually parses one message, expecting it to be a
+ * wl_display.error with the wl_display as the originating object.
+ * Asserts that the received error code is expected_error.
+ */
+static void
+expect_error_recv(int sockfd, uint32_t expected_error)
+{
+       uint32_t buf[1024];
+       ssize_t slen;
+       uint32_t opcode;
+       int str_len;
+
+       slen = recv(sockfd, buf, sizeof buf, 0);
+       assert(slen >= 2 * (ssize_t)sizeof (uint32_t));
+       opcode = buf[1] & 0xffff;
+       fprintf(stderr, "Received %zd bytes, object %u, opcode %u\n",
+               slen, buf[0], opcode);
+
+       /* check error event */
+       assert(buf[0] == 1);
+       assert(opcode == WL_DISPLAY_ERROR);
+
+       str_len = buf[4];
+       assert(str_len > 0);
+       assert(str_len <= slen - 5 * (ssize_t)sizeof (uint32_t));
+       fprintf(stderr, "Error event on object %u, code %u, message \"%*s\"\n",
+               buf[2], buf[3], str_len, (const char *)&buf[5]);
+
+       assert(buf[3] == expected_error);
+}
+
+/* A test for https://gitlab.freedesktop.org/wayland/wayland/issues/52
+ * trying to provoke a read from uninitialized memory in
+ * wl_connection_demarshal() for sender_id and opcode.
+ *
+ * This test might not fail as is even with #52 unfixed, since there is no way
+ * to detect what happens and the crash with zero size depends on stack 
content.
+ * However, running under Valgrind would point out invalid reads and use of
+ * uninitialized values.
+ */
+TEST(request_bogus_size)
+{
+       struct wl_display *display;
+       struct wl_client *client;
+       int s[2];
+       uint32_t msg[3];
+       int bogus_size;
+
+       test_set_timeout(1);
+
+       /*
+        * The manufactured message has real size 12. Test all bogus sizes
+        * smaller than that, and zero as the last one since wl_closure_init
+        * handles zero specially and having garbage in the stack makes it more
+        * likely to crash in wl_connection_demarshal.
+        */
+       for (bogus_size = 11; bogus_size >= 0; bogus_size--) {
+               fprintf(stderr, "* bogus size %d\n", bogus_size);
+
+               assert(socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, s) == 
0);
+               display = wl_display_create();
+               assert(display);
+               client = wl_client_create(display, s[0]);
+               assert(client);
+
+               /* manufacture a request that lies about its size */
+               msg[0] = 1; /* sender id: wl_display */
+               msg[1] = (bogus_size << 16) | WL_DISPLAY_SYNC; /* size and 
opcode */
+               msg[2] = 2; /* sync argument: new_id for wl_callback */
+
+               assert(send(s[1], msg, sizeof msg, 0) == sizeof msg);
+
+               wl_event_loop_dispatch(wl_display_get_event_loop(display), 0);
+
+               expect_error_recv(s[1], WL_DISPLAY_ERROR_INVALID_METHOD);
+
+               /* Do not wl_client_destroy, the error already caused it. */
+               close(s[1]);
+               wl_display_destroy(display);
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/display-test.c 
new/wayland-1.17.0/tests/display-test.c
--- old/wayland-1.16.0/tests/display-test.c     2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/display-test.c     2019-03-21 01:55:25.000000000 
+0100
@@ -420,6 +420,46 @@
 }
 
 static void
+post_implementation_error_main(void)
+{
+       struct client *c = client_connect();
+       struct wl_seat *seat = client_get_seat(c);
+       uint32_t object_id, protocol_error;
+       const struct wl_interface *interface;
+
+       assert(stop_display(c, 1) == -1);
+       int err = wl_display_get_error(c->wl_display);
+       fprintf(stderr, "Err is %i\n", err);
+       assert(err == EPROTO);
+       protocol_error = wl_display_get_protocol_error(c->wl_display,
+                                                      &interface,
+                                                      &object_id);
+       assert(protocol_error == WL_DISPLAY_ERROR_IMPLEMENTATION);
+       assert(interface == &wl_display_interface);
+
+       wl_proxy_destroy((struct wl_proxy *) seat);
+       client_disconnect_nocheck(c);
+}
+
+TEST(post_internal_error_tst)
+{
+       struct display *d = display_create();
+       struct client_info *cl;
+
+       wl_global_create(d->wl_display, &wl_seat_interface,
+                        1, d, bind_seat);
+
+       cl = client_create_noarg(d, post_implementation_error_main);
+       display_run(d);
+
+       wl_client_post_implementation_error(cl->wl_client, "Error %i", 20);
+
+       display_resume(d);
+
+       display_destroy(d);
+}
+
+static void
 register_reading(struct wl_display *display)
 {
        while(wl_display_prepare_read(display) != 0 && errno == EAGAIN)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/sanity-test.c 
new/wayland-1.17.0/tests/sanity-test.c
--- old/wayland-1.16.0/tests/sanity-test.c      2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/sanity-test.c      2019-03-21 01:55:25.000000000 
+0100
@@ -35,7 +35,7 @@
 
 #include "test-compositor.h"
 
-extern int leak_check_enabled;
+extern int fd_leak_check_enabled;
 
 TEST(empty)
 {
@@ -70,8 +70,10 @@
 
 FAIL_TEST(fail_segv)
 {
+       char * volatile *null = 0;
+
        test_disable_coredumps();
-       * (char **) 0 = "Goodbye, world";
+       *null = "Goodbye, world";
 }
 
 FAIL_TEST(sanity_assert)
@@ -81,71 +83,11 @@
        assert(0);
 }
 
-FAIL_TEST(sanity_malloc_direct)
-{
-       void *p;
-
-       assert(leak_check_enabled);
-
-       p = malloc(10); /* memory leak */
-       assert(p);      /* assert that we got memory, also prevents
-                        * the malloc from getting optimized away. */
-       free(NULL);     /* NULL must not be counted */
-       test_disable_coredumps();
-}
-
-TEST(disable_leak_checks)
-{
-       volatile void *mem;
-       assert(leak_check_enabled);
-       /* normally this should be on the beginning of the test.
-        * Here we need to be sure, that the leak checks are
-        * turned on */
-       DISABLE_LEAK_CHECKS;
-
-       mem = malloc(16);
-       assert(mem);
-}
-
-FAIL_TEST(sanity_malloc_indirect)
-{
-       struct wl_array array;
-
-       assert(leak_check_enabled);
-
-       wl_array_init(&array);
-
-       /* call into library that calls malloc */
-       wl_array_add(&array, 14);
-
-       /* not freeing array, must leak */
-
-       test_disable_coredumps();
-}
-
-FAIL_TEST(tc_client_memory_leaks)
-{
-       struct display *d = display_create();
-       client_create_noarg(d, sanity_malloc_direct);
-       display_run(d);
-       test_disable_coredumps();
-       display_destroy(d);
-}
-
-FAIL_TEST(tc_client_memory_leaks2)
-{
-       struct display *d = display_create();
-       client_create_noarg(d, sanity_malloc_indirect);
-       display_run(d);
-       test_disable_coredumps();
-       display_destroy(d);
-}
-
 FAIL_TEST(sanity_fd_leak)
 {
        int fd[2];
 
-       assert(leak_check_enabled);
+       assert(fd_leak_check_enabled);
 
        /* leak 2 file descriptors */
        if (pipe(fd) < 0)
@@ -183,7 +125,7 @@
 {
        int fd[2];
 
-       assert(leak_check_enabled);
+       assert(fd_leak_check_enabled);
 
        /* leak 2 file descriptors */
        if (pipe(fd) < 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/socket-test.c 
new/wayland-1.17.0/tests/socket-test.c
--- old/wayland-1.16.0/tests/socket-test.c      2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/socket-test.c      2019-03-21 01:55:25.000000000 
+0100
@@ -42,7 +42,7 @@
  * See `man 7 unix`.
  */
 
-static const struct sockaddr_un example_sockaddr_un;
+static struct sockaddr_un example_sockaddr_un;
 
 #define TOO_LONG (1 + sizeof example_sockaddr_un.sun_path)
 
@@ -69,6 +69,11 @@
        d = wl_display_connect(path);
        assert(d == NULL);
        assert(errno == ENAMETOOLONG);
+
+       /* This is useless, but prevents a warning about example_sockaddr_un
+        * being discarded from the compilation unit. */
+       strcpy(example_sockaddr_un.sun_path, "happy now clang?");
+       assert(example_sockaddr_un.sun_path[0] != '\0');
 }
 
 TEST(socket_path_overflow_server_create)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/test-compositor.c 
new/wayland-1.17.0/tests/test-compositor.c
--- old/wayland-1.16.0/tests/test-compositor.c  2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/test-compositor.c  2019-03-21 01:55:25.000000000 
+0100
@@ -156,7 +156,7 @@
           int wayland_sock, int client_pipe)
 {
        char s[8];
-       int cur_alloc, cur_fds;
+       int cur_fds;
        int can_continue = 0;
 
        /* Wait until display signals that client can continue */
@@ -169,7 +169,6 @@
        snprintf(s, sizeof s, "%d", wayland_sock);
        setenv("WAYLAND_SOCKET", s, 0);
 
-       cur_alloc = get_current_alloc_num();
        cur_fds = count_open_fds();
 
        client_main(data);
@@ -182,7 +181,7 @@
        if (!getenv("WAYLAND_SOCKET"))
                cur_fds--;
 
-       check_leaks(cur_alloc, cur_fds);
+       check_fd_leaks(cur_fds);
 }
 
 static struct client_info *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/test-runner.c 
new/wayland-1.17.0/tests/test-runner.c
--- old/wayland-1.16.0/tests/test-runner.c      2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/test-runner.c      2019-03-21 01:55:25.000000000 
+0100
@@ -44,16 +44,10 @@
 
 #include "test-runner.h"
 
-static int num_alloc;
-static void* (*sys_malloc)(size_t);
-static void (*sys_free)(void*);
-static void* (*sys_realloc)(void*, size_t);
-static void* (*sys_calloc)(size_t, size_t);
-
-/* when set to 1, check if tests are not leaking memory and opened files.
+/* when set to 1, check if tests are not leaking opened files.
  * It is turned on by default. It can be turned off by
  * WAYLAND_TEST_NO_LEAK_CHECK environment variable. */
-int leak_check_enabled;
+int fd_leak_check_enabled;
 
 /* when this var is set to 0, every call to test_set_timeout() is
  * suppressed - handy when debugging the test. Can be set by
@@ -65,40 +59,6 @@
 
 extern const struct test __start_test_section, __stop_test_section;
 
-__attribute__ ((visibility("default"))) void *
-malloc(size_t size)
-{
-       num_alloc++;
-       return sys_malloc(size);
-}
-
-__attribute__ ((visibility("default"))) void
-free(void* mem)
-{
-       if (mem != NULL)
-               num_alloc--;
-       sys_free(mem);
-}
-
-__attribute__ ((visibility("default"))) void *
-realloc(void* mem, size_t size)
-{
-       if (mem == NULL)
-               num_alloc++;
-       return sys_realloc(mem, size);
-}
-
-__attribute__ ((visibility("default"))) void *
-calloc(size_t nmemb, size_t size)
-{
-       if (sys_calloc == NULL)
-               return NULL;
-
-       num_alloc++;
-
-       return sys_calloc(nmemb, size);
-}
-
 static const struct test *
 find_test(const char *name)
 {
@@ -156,25 +116,12 @@
        abort();
 }
 
-int
-get_current_alloc_num(void)
-{
-       return num_alloc;
-}
-
 void
-check_leaks(int supposed_alloc, int supposed_fds)
+check_fd_leaks(int supposed_fds)
 {
        int num_fds;
 
-       if (leak_check_enabled) {
-               if (supposed_alloc != num_alloc) {
-                       fprintf(stderr, "Memory leak detected in test. "
-                               "Allocated %d blocks, unfreed %d\n", num_alloc,
-                               num_alloc - supposed_alloc);
-                       abort();
-               }
-
+       if (fd_leak_check_enabled) {
                num_fds = count_open_fds();
                if (supposed_fds != num_fds) {
                        fprintf(stderr, "fd leak detected in test. "
@@ -183,14 +130,14 @@
                        abort();
                }
        } else {
-               fprintf(stderr, "Leak checks disabled\n");
+               fprintf(stderr, "FD leak checks disabled\n");
        }
 }
 
 static void
 run_test(const struct test *t)
 {
-       int cur_alloc, cur_fds;
+       int cur_fds;
        struct sigaction sa;
 
        if (timeouts_enabled) {
@@ -200,7 +147,7 @@
                assert(sigaction(SIGALRM, &sa, NULL) == 0);
        }
 
-       cur_alloc = get_current_alloc_num();
+       //cur_alloc = get_current_alloc_num();
        cur_fds = count_open_fds();
 
        t->run();
@@ -209,7 +156,7 @@
        if (timeouts_enabled)
                alarm(0);
 
-       check_leaks(cur_alloc, cur_fds);
+       check_fd_leaks(cur_fds);
 
        exit(EXIT_SUCCESS);
 }
@@ -348,20 +295,14 @@
        int total, pass;
        siginfo_t info;
 
-       /* Load system malloc, free, and realloc */
-       sys_calloc = dlsym(RTLD_NEXT, "calloc");
-       sys_realloc = dlsym(RTLD_NEXT, "realloc");
-       sys_malloc = dlsym(RTLD_NEXT, "malloc");
-       sys_free = dlsym(RTLD_NEXT, "free");
-
        if (isatty(fileno(stderr)))
                is_atty = 1;
 
        if (is_debugger_attached()) {
-               leak_check_enabled = 0;
+               fd_leak_check_enabled = 0;
                timeouts_enabled = 0;
        } else {
-               leak_check_enabled = !getenv("WAYLAND_TEST_NO_LEAK_CHECK");
+               fd_leak_check_enabled = !getenv("WAYLAND_TEST_NO_LEAK_CHECK");
                timeouts_enabled = !getenv("WAYLAND_TEST_NO_TIMEOUTS");
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayland-1.16.0/tests/test-runner.h 
new/wayland-1.17.0/tests/test-runner.h
--- old/wayland-1.16.0/tests/test-runner.h      2018-08-24 20:04:36.000000000 
+0200
+++ new/wayland-1.17.0/tests/test-runner.h      2019-03-21 01:55:25.000000000 
+0100
@@ -63,11 +63,8 @@
 void
 exec_fd_leak_check(int nr_expected_fds); /* never returns */
 
-int
-get_current_alloc_num(void);
-
 void
-check_leaks(int supposed_allocs, int supposed_fds);
+check_fd_leaks(int supposed_fds);
 
 /*
  * set/reset the timeout in seconds. The timeout starts
@@ -89,10 +86,10 @@
 void
 test_disable_coredumps(void);
 
-#define DISABLE_LEAK_CHECKS                    \
-       do {                                    \
-               extern int leak_check_enabled;  \
-               leak_check_enabled = 0;         \
+#define DISABLE_LEAK_CHECKS                            \
+       do {                                            \
+               extern int fd_leak_check_enabled;       \
+               fd_leak_check_enabled = 0;              \
        } while (0);
 
 #endif



Reply via email to