summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBinh Trinh <beango@gmail.com>2017-04-30 23:17:14 -0400
committerPascal Quantin <pascal.quantin@gmail.com>2017-05-03 07:40:32 +0000
commit13b65875d640fc860c4b0eaa12b88a2f60c936c4 (patch)
tree38172551315d6a3d646e93cde2ae7766f6865b1f
parentc6b56bb9c0263d400501671a7f7a69b8b38db16f (diff)
downloadwireshark-13b65875d640fc860c4b0eaa12b88a2f60c936c4.tar.gz
pdcp-lte: add preference to ignore Set Security Algorithm
Useful when captures are already deciphered Change-Id: Ie0f57efa6dccd21d7bd0f25851cbdc8887d7fbbf Reviewed-on: https://code.wireshark.org/review/21443 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r--epan/dissectors/packet-pdcp-lte.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c
index dca2ee3c00..7304565088 100644
--- a/epan/dissectors/packet-pdcp-lte.c
+++ b/epan/dissectors/packet-pdcp-lte.c
@@ -352,6 +352,7 @@ void set_pdcp_lte_up_ciphering_key(guint16 ueid, const char *key)
static gboolean global_pdcp_decipher_signalling = TRUE;
static gboolean global_pdcp_decipher_userplane = FALSE; /* Can be slow, so default to FALSE */
static gboolean global_pdcp_check_integrity = TRUE;
+static gboolean global_pdcp_ignore_sec = FALSE; /* ignore Set Security Algo calls */
/* Use these values where we know the keys but may have missed the algorithm,
e.g. when handing over and RRCReconfigurationRequest goes to target cell only */
@@ -1438,6 +1439,12 @@ void set_pdcp_lte_security_algorithms(guint16 ueid, pdcp_security_info_t *securi
/* N.B. won't work for internal, non-RRC signalling methods... */
pdcp_security_info_t *p_frame_security;
+ /* Disable this entire sub-routine with the Preference */
+ /* Used when the capture is already deciphered */
+ if (global_pdcp_ignore_sec) {
+ return;
+ }
+
/* Create or update current settings, by UEID */
pdcp_security_info_t* ue_security =
(pdcp_security_info_t*)wmem_map_lookup(pdcp_security_hash,
@@ -2948,6 +2955,11 @@ void proto_register_pdcp(void)
"N.B. only possible if build with algorithm support, and have key available and configured",
&global_pdcp_check_integrity);
+ prefs_register_bool_preference(pdcp_lte_module, "ignore_rrc_sec_params",
+ "Ignore RRC security parameters",
+ "Ignore the LTE RRC security algorithm configuration, to be used when PDCP is already deciphered in the capture",
+ &global_pdcp_ignore_sec);
+
pdcp_sequence_analysis_channel_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
pdcp_lte_sequence_analysis_report_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), pdcp_result_hash_func, pdcp_result_hash_equal);
pdcp_security_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), pdcp_lte_ueid_hash_func, pdcp_lte_ueid_hash_equal);