QMI IDL compiler
Go to file
Alex Elder 61f6fe9d1c parser: be more restrictive when parsing numbers
When a number is parsed, the leading one or two characters are used
to indicate whether the number should be interpreted as hexadecimal,
octal or decimal.

But because the parser accepts any digits regardless of the base, it
allows things like 039 to be treated as an octal number, despite '9'
not being a valid digit.  The previous commit makes matters even
worse, allowing [a-fA-F] to be accepted for octal or decimal values.
Such errors are caught (but ignored) later when converting the
accepted string into a number in strtoull().

We are already looking at the first character or two to determine
the base, *after* scanning the number.  Instead, determine the base
when the first one or two characters are first input, and restrict
which characters are accepted in the number based on that.

As a consequence, strtoul() will examine all of the characters
comprising the number (whereas previously it would stop if it
encountered invalid character for the base).

Finally, accept either "0x" or "0X" to indicate hexadecimal.

This doesn't actually change behavior much, but as long as we're
checking every character in a number for validity we might as well
be restrictive.

Signed-off-by: Alex Elder <elder@linaro.org>
Message-Id: <20211001232338.769309-25-elder@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2021-10-04 12:32:01 -05:00
tests parser: be more restrictive when parsing numbers 2021-10-04 12:32:01 -05:00
.gitignore qmic: Add .gitignore 2016-06-02 10:27:42 -07:00
accessor.c kernel: Introduce kernel-style generator 2018-01-31 13:00:02 -08:00
kernel.c kernel: Support having strings in structs 2018-06-29 14:12:50 -07:00
LICENSE qmic: Add the missing LICENSE file 2016-06-02 10:26:43 -07:00
list.h qmic: Adopt common list implementation 2018-01-30 15:55:49 -08:00
Makefile Makefile: Allow compiler/linker flags to be overridden 2018-03-05 21:54:21 -08:00
parser.c parser: be more restrictive when parsing numbers 2021-10-04 12:32:01 -05:00
qmi_tlv.c qmic: Initial basic implementation 2016-02-07 09:27:50 -08:00
qmic.c parser: properly support 64-bit numbers 2021-10-04 12:29:38 -05:00
qmic.h parser: properly support 64-bit numbers 2021-10-04 12:29:38 -05:00