aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-giop.c
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-07-13 20:12:53 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-07-13 20:12:53 +0000
commite608ebb821bb59d34a2b62360dd702bbe3f33da7 (patch)
treec78cb207cf0fd0b0dfa01b97f3ff6d02563aaae7 /epan/dissectors/packet-giop.c
parentdbf28390bd744562ed40a80685e744b91003e9b6 (diff)
Check to see if tvb_child_uncompress returns NULL. Fixes bug 3705.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29086 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-giop.c')
-rw-r--r--epan/dissectors/packet-giop.c102
1 files changed, 52 insertions, 50 deletions
diff --git a/epan/dissectors/packet-giop.c b/epan/dissectors/packet-giop.c
index 5c1ef54938..de27b2c5b5 100644
--- a/epan/dissectors/packet-giop.c
+++ b/epan/dissectors/packet-giop.c
@@ -3963,59 +3963,61 @@ static void dissect_giop_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree
if (header.flags & 0x08)
{
payload_tvb = tvb_child_uncompress(tvb, tvb, GIOP_HEADER_SIZE, tvb_length_remaining(tvb, GIOP_HEADER_SIZE ) );
- add_new_data_source (pinfo, payload_tvb, "decompressed Content");
}
- switch (header.message_type)
- {
-
- case Request:
- if(header.GIOP_version.minor < 2)
- {
- dissect_giop_request_1_1 (payload_tvb, pinfo, tree,
- &header, stream_is_big_endian);
- }
- else
- {
- dissect_giop_request_1_2 (payload_tvb, pinfo, tree,
- &header, stream_is_big_endian);
- }
-
- break;
-
-
- case Reply:
- if(header.GIOP_version.minor < 2)
- {
- dissect_giop_reply (payload_tvb, pinfo, tree, &header,
- stream_is_big_endian);
- }
- else
+ if (payload_tvb) {
+ add_new_data_source (pinfo, payload_tvb, "decompressed Content");
+ switch (header.message_type)
{
- dissect_giop_reply_1_2 (payload_tvb, pinfo, tree,
- &header, stream_is_big_endian);
- }
- break;
- case CancelRequest:
- dissect_giop_cancel_request(payload_tvb, pinfo, tree,
- stream_is_big_endian);
- break;
- case LocateRequest:
- dissect_giop_locate_request(payload_tvb, pinfo, tree, &header,
- stream_is_big_endian);
- break;
- case LocateReply:
- dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header,
- stream_is_big_endian);
- break;
- case Fragment:
- dissect_giop_fragment(payload_tvb, pinfo, tree,
- stream_is_big_endian);
- break;
- default:
- break;
-
- } /* switch message_type */
+
+ case Request:
+ if(header.GIOP_version.minor < 2)
+ {
+ dissect_giop_request_1_1 (payload_tvb, pinfo, tree,
+ &header, stream_is_big_endian);
+ }
+ else
+ {
+ dissect_giop_request_1_2 (payload_tvb, pinfo, tree,
+ &header, stream_is_big_endian);
+ }
+
+ break;
+
+
+ case Reply:
+ if(header.GIOP_version.minor < 2)
+ {
+ dissect_giop_reply (payload_tvb, pinfo, tree, &header,
+ stream_is_big_endian);
+ }
+ else
+ {
+ dissect_giop_reply_1_2 (payload_tvb, pinfo, tree,
+ &header, stream_is_big_endian);
+ }
+ break;
+ case CancelRequest:
+ dissect_giop_cancel_request(payload_tvb, pinfo, tree,
+ stream_is_big_endian);
+ break;
+ case LocateRequest:
+ dissect_giop_locate_request(payload_tvb, pinfo, tree, &header,
+ stream_is_big_endian);
+ break;
+ case LocateReply:
+ dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header,
+ stream_is_big_endian);
+ break;
+ case Fragment:
+ dissect_giop_fragment(payload_tvb, pinfo, tree,
+ stream_is_big_endian);
+ break;
+ default:
+ break;
+
+ } /* switch message_type */
+ }
/*