If the server checksum length is invalid, do proper cleanup in
verify_pac_checksums() before returning.
[ghudson@mit.edu: edited commit message]
ticket: 9143 (new)
tags: pullup
target_version: 1.21-next
ret = k5_pac_locate_buffer(context, pac, KRB5_PAC_SERVER_CHECKSUM,
&server_checksum);
if (ret)
- return ret;
- if (server_checksum.length < PAC_SIGNATURE_DATA_LENGTH)
- return KRB5_BAD_MSIZE;
+ goto cleanup;
+ if (server_checksum.length < PAC_SIGNATURE_DATA_LENGTH) {
+ ret = KRB5_BAD_MSIZE;
+ goto cleanup;
+ }
server_checksum.data += PAC_SIGNATURE_DATA_LENGTH;
server_checksum.length -= PAC_SIGNATURE_DATA_LENGTH;