From: Nickolai Zeldovich Date: Sun, 6 Jan 2013 04:45:59 +0000 (-0500) Subject: libadmin/vos/vosutils.c: mask out sign-extension X-Git-Tag: upstream/1.6.3^2~102 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=d0418efd8edc60979ee7983b81437b5a467732e9;p=packages%2Fo%2Fopenafs.git 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 --- 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; }