diff options
author | Stefan Metzmacher <metze@samba.org> | 2020-05-23 04:56:53 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2020-05-26 09:25:29 +0000 |
commit | 94f0842f8b3113faf6ca6ac5239da2b07e864bcf (patch) | |
tree | 2777e7a010fb741f877e7cb771edd64ac7ad3421 /epan/dissectors/packet-kerberos.c | |
parent | 975e8531a72e4f71eac872eaa145d1146abe2094 (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.c | 33 |
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[] = { |