aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/kerberos/kerberos.cnf
diff options
context:
space:
mode:
authorIsaac Boukris <iboukris@gmail.com>2018-12-04 03:30:56 +0200
committerAnders Broman <a.broman58@gmail.com>2018-12-04 07:49:26 +0000
commit453e72299c9d18b5e2adaea90e62e96e16b1cac6 (patch)
tree066128bd509de64f7a773299def51a576d6dd1ce /epan/dissectors/asn1/kerberos/kerberos.cnf
parent9cba325fc8d6367d7e0d2fd6788c685da63f419f (diff)
krb5: do not dissect PA-S4U-X509-USER inside encrypted-pa-data
According to MS-SFU 2.2.2 PA_S4U_X509_USER checksum section; PA-S4U-X509-USER may be returned inside encrypted-pa-data, but it contains just the checksum data so do not try to dissect it. Quote: The padata of type 130 in the encrypted-pa-data field contains the checksum value in the S4U request concatenated with the checksum value in the S4U reply. Change-Id: Ia124f56914ef2fefd5b0a64fccd176911321f246 Signed-off-by: Isaac Boukris <iboukris@gmail.com> Reviewed-on: https://code.wireshark.org/review/30908 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/asn1/kerberos/kerberos.cnf')
-rw-r--r--epan/dissectors/asn1/kerberos/kerberos.cnf13
1 files changed, 12 insertions, 1 deletions
diff --git a/epan/dissectors/asn1/kerberos/kerberos.cnf b/epan/dissectors/asn1/kerberos/kerberos.cnf
index dadbddd92a..93667cdce2 100644
--- a/epan/dissectors/asn1/kerberos/kerberos.cnf
+++ b/epan/dissectors/asn1/kerberos/kerberos.cnf
@@ -157,7 +157,11 @@ guint32 msgtype;
offset=dissect_ber_octet_string_wcb(FALSE, actx, sub_tree, tvb, offset,hf_index, dissect_kerberos_PA_S4U2Self);
break;
case KRB5_PADATA_S4U_X509_USER:
- offset=dissect_ber_octet_string_wcb(FALSE, actx, sub_tree, tvb, offset,hf_index, dissect_kerberos_PA_S4U_X509_USER);
+ if(!private_data->is_enc_padata) {
+ offset=dissect_ber_octet_string_wcb(FALSE, actx, sub_tree, tvb, offset,hf_index, dissect_kerberos_PA_S4U_X509_USER);
+ }else{
+ offset=dissect_ber_octet_string_wcb(FALSE, actx, sub_tree, tvb, offset,hf_index, NULL);
+ }
break;
case KRB5_PA_PROV_SRV_LOCATION:
offset=dissect_ber_octet_string_wcb(FALSE, actx, sub_tree, tvb, offset,hf_index, dissect_krb5_PA_PROV_SRV_LOCATION);
@@ -410,6 +414,13 @@ AuthorizationData/_item/ad-type STRINGS=VALS(krb5_ad_types)
call_kerberos_callbacks(actx->pinfo, tree, new_tvb, KRB_CBTAG_PRIV_USER_DATA, (kerberos_callbacks*)actx->private_data);
}
+#.FN_HDR EncKDCRepPart/encrypted-pa-data
+ kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
+ private_data->is_enc_padata = TRUE;
+
+#.FN_FTR EncKDCRepPart/encrypted-pa-data
+ private_data->is_enc_padata = FALSE;
+
#.FN_HDR AS-REQ
kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
private_data->is_request = TRUE;