use krb5_data_ct_cmp
This commit is contained in:
@@ -485,21 +485,20 @@ verify_checksum(krb5_context context,
|
|||||||
* for the same issue in MIT, and
|
* for the same issue in MIT, and
|
||||||
* http://blogs.msdn.com/b/openspecification/archive/2010/01/01/verifying-the-server-signature-in-kerberos-privilege-account-certificate.aspx
|
* http://blogs.msdn.com/b/openspecification/archive/2010/01/01/verifying-the-server-signature-in-kerberos-privilege-account-certificate.aspx
|
||||||
* for Microsoft's explaination */
|
* for Microsoft's explaination */
|
||||||
|
|
||||||
if (cksum.cksumtype == CKSUMTYPE_HMAC_MD5) {
|
if (cksum.cksumtype == CKSUMTYPE_HMAC_MD5) {
|
||||||
Checksum local_checksum;
|
Checksum local_checksum;
|
||||||
|
|
||||||
|
memset(&local_checksum, 0, sizeof(local_checksum));
|
||||||
|
|
||||||
ret = HMAC_MD5_any_checksum(context, key, ptr, len,
|
ret = HMAC_MD5_any_checksum(context, key, ptr, len,
|
||||||
KRB5_KU_OTHER_CKSUM, &local_checksum);
|
KRB5_KU_OTHER_CKSUM, &local_checksum);
|
||||||
|
|
||||||
if(local_checksum.checksum.length != cksum.checksum.length ||
|
if (ret != 0 || krb5_data_ct_cmp(&local_checksum.checksum, &cksum.checksum) != 0) {
|
||||||
ct_memcmp(local_checksum.checksum.data, cksum.checksum.data,
|
|
||||||
local_checksum.checksum.length)) {
|
|
||||||
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
|
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
|
||||||
krb5_set_error_message(context, ret,
|
krb5_set_error_message(context, ret,
|
||||||
N_("PAC integrity check failed for "
|
N_("PAC integrity check failed for "
|
||||||
"hmac-md5 checksum", ""));
|
"hmac-md5 checksum", ""));
|
||||||
} else {
|
|
||||||
ret = 0;
|
|
||||||
}
|
}
|
||||||
krb5_data_free(&local_checksum.checksum);
|
krb5_data_free(&local_checksum.checksum);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user