aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-kerberos.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2020-05-23 04:56:53 +0200
committerAnders Broman <a.broman58@gmail.com>2020-05-26 09:25:29 +0000
commit94f0842f8b3113faf6ca6ac5239da2b07e864bcf (patch)
tree2777e7a010fb741f877e7cb771edd64ac7ad3421 /epan/dissectors/packet-kerberos.c
parent975e8531a72e4f71eac872eaa145d1146abe2094 (diff)
packet-kerberos: split out kerberos_new_private_data()
This way we can avoid zero_private on the stack. Change-Id: Iea7ed7e1cd6d0616b0e72aeff489549efd13e4f4 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-on: https://code.wireshark.org/review/37291 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-kerberos.c')
-rw-r--r--epan/dissectors/packet-kerberos.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index 3354dcb91c..4420bb7023 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -677,10 +677,23 @@ call_kerberos_callbacks(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int
}
static kerberos_private_data_t*
+kerberos_new_private_data(void)
+{
+ kerberos_private_data_t *p;
+
+ p = wmem_new0(wmem_packet_scope(), kerberos_private_data_t);
+ if (p == NULL) {
+ return NULL;
+ }
+
+ return p;
+}
+
+static kerberos_private_data_t*
kerberos_get_private_data(asn1_ctx_t *actx)
{
if (!actx->private_data) {
- actx->private_data = wmem_new0(wmem_packet_scope(), kerberos_private_data_t);
+ actx->private_data = kerberos_new_private_data();
}
return (kerberos_private_data_t *)(actx->private_data);
}
@@ -1401,8 +1414,8 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
int keytype,
int *datalen)
{
- kerberos_private_data_t zero_private = { .msg_type = 0, };
- return decrypt_krb5_data_private(tree, pinfo, &zero_private,
+ kerberos_private_data_t *zero_private = kerberos_new_private_data();
+ return decrypt_krb5_data_private(tree, pinfo, zero_private,
usage, cryptotvb, keytype,
datalen);
}
@@ -1551,7 +1564,7 @@ decrypt_krb5_krb_cfx_dce(proto_tree *tree,
tvbuff_t *checksum_tvb)
{
struct decrypt_krb5_krb_cfx_dce_state state;
- kerberos_private_data_t zero_private = { .msg_type = 0, };
+ kerberos_private_data_t *zero_private = kerberos_new_private_data();
tvbuff_t *gssapi_decrypted_tvb = NULL;
krb5_error_code ret;
@@ -1605,7 +1618,7 @@ decrypt_krb5_krb_cfx_dce(proto_tree *tree,
ret = decrypt_krb5_with_cb(tree,
pinfo,
- &zero_private,
+ zero_private,
usage,
keytype,
gssapi_encrypted_tvb,
@@ -1871,7 +1884,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
int keytype,
int *datalen)
{
- kerberos_private_data_t zero_private = { .msg_type = 0, };
+ kerberos_private_data_t *zero_private = kerberos_new_private_data();
krb5_error_code ret;
krb5_data data;
enc_key_t *ek;
@@ -1922,7 +1935,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
if((ret == 0) && (length>0)){
char *user_data;
- used_encryption_key(tree, pinfo, &zero_private,
+ used_encryption_key(tree, pinfo, zero_private,
ek, usage, cryptotvb);
krb5_crypto_destroy(krb5_ctx, crypto);
@@ -6086,7 +6099,7 @@ dissect_kerberos_EncryptedChallenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
/*--- End of included file: packet-kerberos-fn.c ---*/
-#line 3026 "./asn1/kerberos/packet-kerberos-template.c"
+#line 3039 "./asn1/kerberos/packet-kerberos-template.c"
#ifdef HAVE_KERBEROS
static const ber_sequence_t PA_ENC_TS_ENC_sequence[] = {
@@ -7404,7 +7417,7 @@ void proto_register_kerberos(void) {
NULL, HFILL }},
/*--- End of included file: packet-kerberos-hfarr.c ---*/
-#line 3499 "./asn1/kerberos/packet-kerberos-template.c"
+#line 3512 "./asn1/kerberos/packet-kerberos-template.c"
};
/* List of subtrees */
@@ -7503,7 +7516,7 @@ void proto_register_kerberos(void) {
&ett_kerberos_KrbFastArmoredRep,
/*--- End of included file: packet-kerberos-ettarr.c ---*/
-#line 3522 "./asn1/kerberos/packet-kerberos-template.c"
+#line 3535 "./asn1/kerberos/packet-kerberos-template.c"
};
static ei_register_info ei[] = {