Skip Menu |
 

From: ghudson@mit.edu
Subject: SVN Commit

Our ancient RPC value internally decodes 32-bit wire values into a
signed long, which is then casted to the appropriate type.
xdr_u_int() contains a check intended to catch wire values that don't
fit into a u_int on platforms with 16-ints, but on platforms with
64-bit longs it was failing on values of 2^31 or larger because the
sign-extended value appeared larger than UINT_MAX. Fix the check by
casting the value to uint32_t before comparing.

This bug, in combination with a poor choice of types in
kadm_rpc_xdr.c's xdr_krb5_enctype(), prevented negative enctype values
from being transported properly in kadmin's change_password command
result.


https://github.com/krb5/krb5/commit/4ec9f0f4cbcd906456ea3aab794edd8f56d9d079
Commit By: ghudson
Revision: 24210
Changed Files:
U trunk/src/lib/rpc/xdr.c