diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2015-11-04 14:21:52 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2016-01-12 12:05:47 +0800 |
commit | 3de1783e5038639128bb37f2937eeee3e36aefe6 (patch) | |
tree | b9bcfdbeae35890b3f82497ebb37464b3098fc6b | |
parent | 2f666ee34fb414f43def75c1caa1243feb349f8d (diff) | |
download | wayland-3de1783e5038639128bb37f2937eeee3e36aefe6.tar.gz |
scanner: Fail if 'since' is higher than the interface version
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@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
-rw-r--r-- | src/scanner.c | 6 |
1 files changed, 5 insertions, 1 deletions
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; } |