From 3de1783e5038639128bb37f2937eeee3e36aefe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 4 Nov 2015 14:21:52 +0800 Subject: [PATCH] scanner: Fail if 'since' is higher than the interface version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Daniel Stone Reviewed-by: Marek Chalupa Reviewed-by: Derek Foreman --- src/scanner.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/scanner.c b/src/scanner.c index 3f79a443..b00f036a 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; }