[PATCH wayland 2/6] scanner: Fail if 'since' is higher than the interface version

Jonas Ådahl jadahl at gmail.com
Mon Dec 28 18:10:10 PST 2015


If an event or request have a "since" attribute that is larger than
the version of the interface it is in, fail with an explaining error
message.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
 src/scanner.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/scanner.c b/src/scanner.c
index 3f79a44..b00f036 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -674,8 +674,12 @@ start_element(void *data, const char *element_name, const char **atts)
 
 		if (since != NULL) {
 			version = strtouint(since);
-			if (version == -1)
+			if (version == -1) {
 				fail(&ctx->loc, "invalid integer (%s)\n", since);
+			} else if (version > ctx->interface->version) {
+				fail(&ctx->loc, "since (%u) larger than version (%u)\n",
+				     version, ctx->interface->version);
+			}
 		} else {
 			version = 1;
 		}
-- 
2.4.3



More information about the wayland-devel mailing list