aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Quantin <pascal@wireshark.org>2019-07-12 10:00:33 +0200
committerPascal Quantin <pascal@wireshark.org>2019-07-12 12:48:51 +0000
commit57d67f8ee319ce645b4d6f36b52096190326a96e (patch)
tree6672b2b705a8f70f165a347ebb6b734550ccc3ed
parent4cc142ecbc2cb9c4f4b5be6dc93d920688b9fee8 (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>
-rw-r--r--epan/dissectors/packet-log3gpp.c34
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;