kerberos: always remember the toplevel msg_type in MESSAGE-TYPE
authorStefan Metzmacher <metze@samba.org>
Thu, 10 Jan 2019 09:39:05 +0000 (10:39 +0100)
committerStefan Metzmacher <metze@samba.org>
Sun, 20 Jan 2019 22:14:58 +0000 (23:14 +0100)
Change-Id: I20f7ea81a8328c422785a44e3647ae2f749b89cc

epan/dissectors/asn1/kerberos/kerberos.cnf

index a23765d..7c450f1 100644 (file)
@@ -104,7 +104,8 @@ KrbFastArmorTypes UPPER_CASE_FIRST
        private_data->kdc_response_initialized = TRUE;
 
 #.FN_BODY MESSAGE-TYPE VAL_PTR = &msgtype
-guint32 msgtype;
+       kerberos_private_data_t *private_data = kerberos_get_private_data(actx);
+       guint32 msgtype;
 
 %(DEFAULT_BODY)s
 
@@ -120,6 +121,9 @@ guint32 msgtype;
        /* append the application type to the tree */
        proto_item_append_text(tree, " %s", val_to_str(msgtype, krb5_msg_types, "Unknown:0x%x"));
 ##endif
+       if (private_data->msg_type == 0) {
+               private_data->msg_type = msgtype;
+       }
 
 #.FN_BODY ERROR-CODE VAL_PTR = &private_data->errorcode
        kerberos_private_data_t *private_data = kerberos_get_private_data(actx);
@@ -543,26 +547,6 @@ guint32 msgtype;
 #.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->msg_type = KRB5_MSG_AS_REQ;
-
-#.FN_HDR AS-REP
-       kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
-       private_data->msg_type = KRB5_MSG_AS_REP;
-
-#.FN_HDR KRB-ERROR
-       kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
-       private_data->msg_type = KRB5_MSG_ERROR;
-
-#.FN_HDR TGS-REQ
-       kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
-       private_data->msg_type = KRB5_MSG_TGS_REQ;
-
-#.FN_HDR TGS-REP
-       kerberos_private_data_t* private_data = kerberos_get_private_data(actx);
-       private_data->msg_type = KRB5_MSG_TGS_REP;
-
 #.FN_BODY EncryptedKrbFastReq/cipher
 ##ifdef HAVE_KERBEROS
        offset=dissect_ber_octet_string_wcb(FALSE, actx, tree, tvb, offset, hf_index, dissect_krb5_decrypt_KrbFastReq);