From d0418efd8edc60979ee7983b81437b5a467732e9 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Sat, 5 Jan 2013 23:45:59 -0500 Subject: [PATCH] libadmin/vos/vosutils.c: mask out sign-extension Right-shifting a signed int by 24 bits can produce a value outside of 0..0xff due to sign-extension. As a result, in AddressMatch(), the first bPattern!=255 check can never succeed. Fix by masking with 255 before comparison. Reviewed-on: http://gerrit.openafs.org/8884 Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: BuildBot (cherry picked from commit 8e8e3c26b87d78b92d96ba91d58ee59d774ebcb5) Change-Id: Ifee303905d004936e96f6be1e6a9188d7b70978c Reviewed-on: http://gerrit.openafs.org/9517 Tested-by: BuildBot Reviewed-by: Derrick Brashear Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand --- src/libadmin/vos/vosutils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libadmin/vos/vosutils.c b/src/libadmin/vos/vosutils.c index 4672651c8..4ac47bfe3 100644 --- a/src/libadmin/vos/vosutils.c +++ b/src/libadmin/vos/vosutils.c @@ -567,8 +567,8 @@ AddressMatch(int addrTest, int addrPattern) int bPattern; /* Test the high byte */ - bTest = addrTest >> 24; - bPattern = addrPattern >> 24; + bTest = (addrTest >> 24) & 255; + bPattern = (addrPattern >> 24) & 255; if ((bTest != bPattern) && (bPattern != 255)) { return FALSE; } -- 2.39.5