From 6d926088d80a08e13e6d6c4ff207b81ad52e667f Mon Sep 17 00:00:00 2001 From: Thomas Klausner Date: Tue, 25 Jun 2013 18:34:32 +0200 Subject: [PATCH] Fix out-of-range comparison in _XF86BigfontQueryFont clang complained (correctly): warning: comparison of constant 768614336404564650 with expression of type 'CARD32' (aka 'unsigned int') is always true [-Wtautological-constant-out-of-range-compare] [While LONG_MAX is correct, since it's used in size_t math, the numbers have to be limited to 32-bit range to be usable by 32-bit clients, and values beyond that range are far more likely to be bugs in the data from the server than valid numbers of characters in a font. -alan- ] Reviewed-by: Alan Coopersmith Signed-off-by: Alan Coopersmith --- src/Font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Font.c b/src/Font.c index a32f740b..ac180242 100644 --- a/src/Font.c +++ b/src/Font.c @@ -588,7 +588,7 @@ _XF86BigfontQueryFont ( if (!(extcodes->serverCapabilities & CAP_VerifiedLocal)) { struct shmid_ds buf; if (!(shmctl(reply.shmid, IPC_STAT, &buf) >= 0 - && reply.nCharInfos < (LONG_MAX / sizeof(XCharStruct)) + && reply.nCharInfos < (INT_MAX / sizeof(XCharStruct)) && buf.shm_segsz >= reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct) + sizeof(CARD32) && *(CARD32 *)(addr + reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct)) == extcodes->serverSignature)) { shmdt(addr);