diff options
author | Pascal Quantin <pascal@wireshark.org> | 2019-07-12 10:00:33 +0200 |
---|---|---|
committer | Pascal Quantin <pascal@wireshark.org> | 2019-07-12 12:48:51 +0000 |
commit | 57d67f8ee319ce645b4d6f36b52096190326a96e (patch) | |
tree | 6672b2b705a8f70f165a347ebb6b734550ccc3ed /epan/dissectors/packet-log3gpp.c | |
parent | 4cc142ecbc2cb9c4f4b5be6dc93d920688b9fee8 (diff) |
LOG3GPP: do not dereference a NULL pointer (CID 1450541)
Change-Id: Ic65f21bcc49657ac74bf2eb8d86cb59c29cc233e
Reviewed-on: https://code.wireshark.org/review/33907
Petri-Dish: Pascal Quantin <pascal@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal@wireshark.org>
Diffstat (limited to 'epan/dissectors/packet-log3gpp.c')
-rw-r--r-- | epan/dissectors/packet-log3gpp.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/epan/dissectors/packet-log3gpp.c b/epan/dissectors/packet-log3gpp.c index d997fa9956..5e2da2748e 100644 --- a/epan/dissectors/packet-log3gpp.c +++ b/epan/dissectors/packet-log3gpp.c @@ -266,6 +266,10 @@ lte_mac_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length, packet_ /* First mandatory parameter */ par_opt_field = strtok(option, " "); + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "FDD") == 0) { p_mac_lte_info->radioType = FDD_RADIO; @@ -281,6 +285,10 @@ lte_mac_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length, packet_ /* Second mandatory parameter */ par_opt_field = strtok(NULL, " "); + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "NO_RNTI") == 0) { p_mac_lte_info->rntiType = NO_RNTI; @@ -319,7 +327,10 @@ lte_mac_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length, packet_ /* First optional parameter */ p_mac_lte_info->subframeNumber = 0; par_opt_field = strtok(NULL, " "); - + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "SFN") == 0) { par_opt_field = strtok(NULL, " "); @@ -369,7 +380,10 @@ lte_rlc_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length, packet_ p_rlc_lte_info = (struct rlc_lte_info*) wmem_new0(wmem_packet_scope(), rlc_lte_info); /* First mandatory parameter */ par_opt_field = strtok(option, " "); - + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "SRB") == 0) { p_rlc_lte_info->channelType = CHANNEL_TYPE_SRB; @@ -384,10 +398,18 @@ lte_rlc_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length, packet_ } /* Fill in the RB ID */ par_opt_field = strtok(NULL, " "); + if (par_opt_field == NULL) + { + return 0; + } ws_strtou16(par_opt_field, NULL, &p_rlc_lte_info->channelId); /* Second mandatory parameter */ par_opt_field = strtok(NULL, " "); + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "TM") == 0) { p_rlc_lte_info->rlcMode = RLC_TM_MODE; @@ -463,6 +485,10 @@ lte_pdcp_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length _U_, pa p_pdcp_lte_info = (struct pdcp_lte_info*) wmem_new0(wmem_packet_scope(), pdcp_lte_info); /* First mandatory parameter */ par_opt_field = strtok(option, " "); + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "SRB") == 0) { p_pdcp_lte_info->plane = SIGNALING_PLANE; @@ -477,6 +503,10 @@ lte_pdcp_pseudo_hdr(char* option_str, packet_info* pinfo, guint16 length _U_, pa } /* Second mandatory parameter */ par_opt_field = strtok(NULL, " "); + if (par_opt_field == NULL) + { + return 0; + } if (strcmp(par_opt_field, "SN_7b") == 0) { p_pdcp_lte_info->seqnum_length = PDCP_SN_LENGTH_7_BITS; |