[PATCH] Fix overflow checking extension versions
Keith Packard
keithp at keithp.com
Thu May 22 18:05:39 PDT 2014
Robert Ancell <robert.ancell at canonical.com> writes:
> The easiest way to check for the version of an extension is to send the maximum
> possible version numbers in the QueryVersion request. The X server overflows on
> these as it assumes you will send a reasonable version number.
> ---
> include/misc.h | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/include/misc.h b/include/misc.h
> index 17de710..9c2f573 100644
> --- a/include/misc.h
> +++ b/include/misc.h
> @@ -259,15 +259,19 @@ extern void FormatDouble(double dbl, char *string);
> * or a value greater than 0
> */
> static inline int
> -version_compare(uint16_t a_major, uint16_t a_minor,
> - uint16_t b_major, uint16_t b_minor)
> +version_compare(uint32_t a_major, uint32_t a_minor,
> + uint32_t b_major, uint32_t b_minor)
I don't see any particular reason to change the signature of this
function; the rest of the rewrite should work with 16-bit ints.
> {
> - int a, b;
Just changing these to uint32_t and fixing the test to
if (a > b)
return 1;
if (a < b)
return -1;
return 0;
would suffice, assuming everything is 16-bit ints.
--
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 810 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140522/bdf74881/attachment-0001.sig>
More information about the xorg-devel
mailing list