diff --git a/epan/frame_data.c b/epan/frame_data.c index 9365110f8a..603deb286a 100644 --- a/epan/frame_data.c +++ b/epan/frame_data.c @@ -227,7 +227,6 @@ frame_data_init(frame_data *fdata, guint32 num, const wtap_rec *rec, ws_assert(rec->tsprec <= 0xF); fdata->tsprec = (unsigned int)rec->tsprec; fdata->abs_ts = rec->ts; - fdata->has_phdr_block = (rec->block != NULL); fdata->has_modified_block = 0; fdata->need_colorize = 0; fdata->color_filter = NULL; diff --git a/epan/frame_data.h b/epan/frame_data.h index 004d931830..dc9805af95 100644 --- a/epan/frame_data.h +++ b/epan/frame_data.h @@ -84,7 +84,6 @@ typedef struct _frame_data { unsigned int ref_time : 1; /**< 1 = marked as a reference time frame, 0 = normal */ unsigned int ignored : 1; /**< 1 = ignore this frame, 0 = normal */ unsigned int has_ts : 1; /**< 1 = has time stamp, 0 = no time stamp */ - unsigned int has_phdr_block : 1; /** 1 = there's a block (possibly with options) for this packet */ unsigned int has_modified_block : 1; /** 1 = block for this packet has been modified */ unsigned int need_colorize : 1; /**< 1 = need to (re-)calculate packet color */ unsigned int tsprec : 4; /**< Time stamp precision -2^tsprec gives up to femtoseconds */ diff --git a/epan/packet.c b/epan/packet.c index f53193a19b..53aac73f02 100644 --- a/epan/packet.c +++ b/epan/packet.c @@ -605,11 +605,8 @@ dissect_record(epan_dissect_t *edt, int file_type_subtype, if (fd->has_modified_block) { frame_dissector_data.pkt_block = epan_get_modified_block(edt->session, fd); } - else if (fd->has_phdr_block) { - frame_dissector_data.pkt_block = rec->block; - } else { - frame_dissector_data.pkt_block = NULL; + frame_dissector_data.pkt_block = rec->block; } frame_dissector_data.file_type_subtype = file_type_subtype; frame_dissector_data.color_edt = edt; /* Used strictly for "coloring rules" */ @@ -682,11 +679,8 @@ dissect_file(epan_dissect_t *edt, wtap_rec *rec, if (fd->has_modified_block) { file_dissector_data.pkt_block = epan_get_modified_block(edt->session, fd); } - else if (fd->has_phdr_block) { - file_dissector_data.pkt_block = rec->block; - } else { - file_dissector_data.pkt_block = NULL; + file_dissector_data.pkt_block = rec->block; } file_dissector_data.color_edt = edt; /* Used strictly for "coloring rules" */ diff --git a/epan/wslua/wslua_dumper.c b/epan/wslua/wslua_dumper.c index 698c6e385d..6ebf6bba07 100644 --- a/epan/wslua/wslua_dumper.c +++ b/epan/wslua/wslua_dumper.c @@ -547,7 +547,7 @@ WSLUA_METHOD Dumper_dump_current(lua_State* L) { if (lua_pinfo->fd->has_modified_block) { rec.block = epan_get_modified_block(lua_pinfo->epan, lua_pinfo->fd); rec.block_was_modified = TRUE; - } else if (lua_pinfo->fd->has_phdr_block) { + } else { rec.block = lua_pinfo->rec->block; } diff --git a/file.c b/file.c index ea85533d15..24507d1efe 100644 --- a/file.c +++ b/file.c @@ -4004,13 +4004,12 @@ cf_get_packet_block(capture_file *cf, const frame_data *fd) /* If this block has been modified, fetch the modified version */ if (fd->has_modified_block) return wtap_block_ref(cap_file_provider_get_modified_block(&cf->provider, fd)); - - /* fetch phdr block */ - if (fd->has_phdr_block) { + else { wtap_rec rec; /* Record metadata */ Buffer buf; /* Record data */ wtap_block_t block; + /* fetch record block */ wtap_rec_init(&rec); ws_buffer_init(&buf, 1514); @@ -4024,7 +4023,6 @@ cf_get_packet_block(capture_file *cf, const frame_data *fd) ws_buffer_free(&buf); return block; } - return NULL; } /* @@ -4767,7 +4765,6 @@ cf_save_records(capture_file *cf, const char *fname, guint save_format, fdata = frame_data_sequence_find(cf->provider.frames, framenum); // XXX: This also ignores non-comment options like verdict - fdata->has_phdr_block = FALSE; fdata->has_modified_block = FALSE; } diff --git a/plugins/wiretap/usbdump/usbdump.c b/plugins/wiretap/usbdump/usbdump.c index be979fcfe5..354c363561 100644 --- a/plugins/wiretap/usbdump/usbdump.c +++ b/plugins/wiretap/usbdump/usbdump.c @@ -261,6 +261,7 @@ usbdump_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, /* Setup the per packet structure and fill it with info from this frame */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS | WTAP_HAS_CAP_LEN; rec->ts.secs = (guint32)bpf_hdr[3] << 24 | (guint32)bpf_hdr[2] << 16 | (guint32)bpf_hdr[1] << 8 | (guint32)bpf_hdr[0]; diff --git a/sharkd.c b/sharkd.c index 0c6dcbc525..3a9cf40363 100644 --- a/sharkd.c +++ b/sharkd.c @@ -729,7 +729,7 @@ sharkd_get_packet_block(const frame_data *fd) { if (fd->has_modified_block) return wtap_block_ref(cap_file_provider_get_modified_block(&cfile.provider, fd)); - if (fd->has_phdr_block) + else { wtap_rec rec; /* Record metadata */ Buffer buf; /* Record data */ @@ -750,8 +750,6 @@ sharkd_get_packet_block(const frame_data *fd) ws_buffer_free(&buf); return block; } - else - return wtap_block_create(WTAP_BLOCK_PACKET); } int diff --git a/sharkd_session.c b/sharkd_session.c index ca27847a7f..f70cb2bc54 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -1346,7 +1346,7 @@ sharkd_session_process_frames_cb(epan_dissect_t *edt, proto_tree *tree _U_, */ if (fdata->has_modified_block) pkt_block = sharkd_get_modified_block(fdata); - else if (fdata->has_phdr_block) + else pkt_block = pi->rec->block; /* @@ -3428,7 +3428,7 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep if (fdata->has_modified_block) pkt_block = sharkd_get_modified_block(fdata); - else if (fdata->has_phdr_block) + else pkt_block = pi->rec->block; if (pkt_block) diff --git a/ui/tap_export_pdu.c b/ui/tap_export_pdu.c index 6364169138..0e27619207 100644 --- a/ui/tap_export_pdu.c +++ b/ui/tap_export_pdu.c @@ -65,7 +65,7 @@ export_pdu_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const if (pinfo->fd->has_modified_block) { rec.block = epan_get_modified_block(edt->session, pinfo->fd); rec.block_was_modified = TRUE; - } else if (pinfo->fd->has_phdr_block) { + } else { rec.block = pinfo->rec->block; } diff --git a/wiretap/5views.c b/wiretap/5views.c index c2a87dc325..0c525c8c51 100644 --- a/wiretap/5views.c +++ b/wiretap/5views.c @@ -281,6 +281,7 @@ _5views_read_header(wtap *wth, FILE_T fh, t_5VW_TimeStamped_Header *hdr, hdr->NanoSecondes = pletoh32(&hdr->NanoSecondes); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = hdr->Utc; rec->ts.nsecs = hdr->NanoSecondes; diff --git a/wiretap/aethra.c b/wiretap/aethra.c index 172e4ad63a..c693680107 100644 --- a/wiretap/aethra.c +++ b/wiretap/aethra.c @@ -330,6 +330,7 @@ aethra_read_rec_header(wtap *wth, FILE_T fh, struct aethrarec_hdr *hdr, msecs = pletoh32(hdr->timestamp); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = aethra->start + (msecs / 1000); rec->ts.nsecs = (msecs % 1000) * 1000000; diff --git a/wiretap/ascendtext.c b/wiretap/ascendtext.c index 75e73dcfa4..5d768cdf3b 100644 --- a/wiretap/ascendtext.c +++ b/wiretap/ascendtext.c @@ -369,6 +369,7 @@ parse_ascend(ascend_t *ascend, FILE_T fh, wtap_rec *rec, Buffer *buf, ascend->inittime -= parser_state.secs; } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->ts.secs = parser_state.secs + ascend->inittime; rec->ts.nsecs = parser_state.usecs * 1000; diff --git a/wiretap/btsnoop.c b/wiretap/btsnoop.c index 5ba65cbae4..36904ac86f 100644 --- a/wiretap/btsnoop.c +++ b/wiretap/btsnoop.c @@ -203,6 +203,7 @@ static gboolean btsnoop_read_record(wtap *wth, FILE_T fh, ts -= KUnixTimeBase; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->ts.secs = (guint)(ts / 1000000); rec->ts.nsecs = (guint)((ts % 1000000) * 1000); diff --git a/wiretap/busmaster.c b/wiretap/busmaster.c index eacfb12efb..c98b9d96aa 100644 --- a/wiretap/busmaster.c +++ b/wiretap/busmaster.c @@ -180,6 +180,7 @@ busmaster_gen_packet(wtap_rec *rec, Buffer *buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = has_ts ? WTAP_HAS_TS : 0; rec->ts.secs = secs; rec->ts.nsecs = nsecs; diff --git a/wiretap/camins.c b/wiretap/camins.c index 775c8990ee..5d9680e3a9 100644 --- a/wiretap/camins.c +++ b/wiretap/camins.c @@ -377,6 +377,7 @@ camins_read_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, offset += bytes_read; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = 0; /* we may or may not have a time stamp */ rec->rec_header.packet_header.pkt_encap = WTAP_ENCAP_DVBCI; if (time_us) { diff --git a/wiretap/candump.c b/wiretap/candump.c index 572dbc8c1a..28fda91107 100644 --- a/wiretap/candump.c +++ b/wiretap/candump.c @@ -86,6 +86,7 @@ candump_write_packet(wtap_rec *rec, Buffer *buf, const msg_t *msg) } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts = msg->ts; rec->tsprec = WTAP_TSPREC_USEC; diff --git a/wiretap/capsa.c b/wiretap/capsa.c index f49314312e..b8bf256d29 100644 --- a/wiretap/capsa.c +++ b/wiretap/capsa.c @@ -420,6 +420,7 @@ capsa_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, rec->rec_header.packet_header.pseudo_header.eth.fcs_len = 0; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->rec_header.packet_header.caplen = packet_size; rec->rec_header.packet_header.len = orig_size; rec->presence_flags = WTAP_HAS_CAP_LEN|WTAP_HAS_TS; diff --git a/wiretap/catapult_dct2000.c b/wiretap/catapult_dct2000.c index fd6ace8af7..a3135c9a4c 100644 --- a/wiretap/catapult_dct2000.c +++ b/wiretap/catapult_dct2000.c @@ -1278,6 +1278,7 @@ process_parsed_line(wtap *wth, dct2000_file_externals_t *file_externals, guint8 *frame_buffer; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; /* Make sure all packets go to Catapult DCT2000 dissector */ diff --git a/wiretap/commview.c b/wiretap/commview.c index 64a341cdff..a30e613c57 100644 --- a/wiretap/commview.c +++ b/wiretap/commview.c @@ -316,6 +316,7 @@ commview_ncf_read_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, tm.tm_isdst = -1; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.len = cv_hdr.data_len; @@ -1003,6 +1004,7 @@ commview_ncfx_read_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, tm.tm_isdst = -1; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; if (length_remaining > WTAP_MAX_PACKET_SIZE_STANDARD) { diff --git a/wiretap/cosine.c b/wiretap/cosine.c index 18ecddd293..b9b1f615ab 100644 --- a/wiretap/cosine.c +++ b/wiretap/cosine.c @@ -383,6 +383,7 @@ parse_cosine_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; tm.tm_year = yy - 1900; tm.tm_mon = mm - 1; diff --git a/wiretap/csids.c b/wiretap/csids.c index 68849ccb2b..584ef6e34d 100644 --- a/wiretap/csids.c +++ b/wiretap/csids.c @@ -185,6 +185,7 @@ csids_read_packet(FILE_T fh, csids_t *csids, wtap_rec *rec, */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.len = hdr.caplen; rec->rec_header.packet_header.caplen = hdr.caplen; diff --git a/wiretap/daintree-sna.c b/wiretap/daintree-sna.c index 418118b6c5..8570cb2305 100644 --- a/wiretap/daintree-sna.c +++ b/wiretap/daintree-sna.c @@ -171,6 +171,7 @@ daintree_sna_read_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, } while (readLine[0] == COMMENT_LINE); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; if (sscanf(readLine, "%*s %18" G_GINT64_MODIFIER "u.%9d %9u %" READDATA_MAX_FIELD_SIZE "s", diff --git a/wiretap/dbs-etherwatch.c b/wiretap/dbs-etherwatch.c index 9d95ad9985..83ab8647cd 100644 --- a/wiretap/dbs-etherwatch.c +++ b/wiretap/dbs-etherwatch.c @@ -435,6 +435,7 @@ parse_dbs_etherwatch_packet(FILE_T fh, wtap_rec *rec, Buffer* buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; p = strstr(months, mon); diff --git a/wiretap/dct3trace.c b/wiretap/dct3trace.c index 242f47d53d..f361ca4b9c 100644 --- a/wiretap/dct3trace.c +++ b/wiretap/dct3trace.c @@ -250,6 +250,7 @@ static gboolean dct3trace_get_packet(FILE_T fh, wtap_rec *rec, { /* We've got a full packet! */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = 0; /* no time stamp, no separate "on the wire" length */ rec->ts.secs = 0; rec->ts.nsecs = 0; diff --git a/wiretap/dpa400.c b/wiretap/dpa400.c index 26fe935ba4..d348d4b691 100644 --- a/wiretap/dpa400.c +++ b/wiretap/dpa400.c @@ -106,6 +106,7 @@ static gboolean dpa400_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, get_ts(&hdr, &rec->ts); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.caplen = rec->rec_header.packet_header.len = 0; @@ -134,6 +135,7 @@ static gboolean dpa400_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, ctr++; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.caplen = rec->rec_header.packet_header.len = ctr; @@ -171,6 +173,7 @@ static gboolean dpa400_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.caplen = rec->rec_header.packet_header.len = ctr; @@ -181,6 +184,7 @@ static gboolean dpa400_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, get_ts_overflow(&rec->ts); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.caplen = rec->rec_header.packet_header.len = ctr; diff --git a/wiretap/erf.c b/wiretap/erf.c index aedbafe094..b2d96d91db 100644 --- a/wiretap/erf.c +++ b/wiretap/erf.c @@ -716,6 +716,7 @@ static gboolean erf_read_header(wtap *wth, FILE_T fh, /*if ((erf_header->type & 0x7f) != ERF_TYPE_META || wth->file_type_subtype != file_type_subtype_erf) {*/ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); /* * XXX: ERF_TYPE_META records should ideally be FT_SPECIFIC for display * purposes, but currently ft_specific_record_phdr clashes with erf_mc_phdr @@ -733,6 +734,7 @@ static gboolean erf_read_header(wtap *wth, FILE_T fh, */ /* For now just treat all Provenance records as reports */ rec->rec_type = REC_TYPE_FT_SPECIFIC_REPORT; + rec->block = wtap_block_create(WTAP_BLOCK_FT_SPECIFIC_REPORT); /* XXX: phdr ft_specific_record_phdr? */ } #endif @@ -2257,9 +2259,6 @@ static int erf_update_anchors_from_header(erf_t *erf_priv, wtap_rec *rec, union } if (comment) { - /* Will be freed by either wtap_sequential_close (for rec = &wth->rec) or by - * the caller of wtap_seek_read. See wtap_rec_cleanup. */ - rec->block = wtap_block_create(WTAP_BLOCK_PACKET); wtap_block_add_string_option(rec->block, OPT_COMMENT, comment, strlen(comment)); } diff --git a/wiretap/eyesdn.c b/wiretap/eyesdn.c index 94730fff12..3f2be31f7c 100644 --- a/wiretap/eyesdn.c +++ b/wiretap/eyesdn.c @@ -299,6 +299,7 @@ read_eyesdn_rec(FILE_T fh, wtap_rec *rec, Buffer *buf, int *err, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = secs; rec->ts.nsecs = usecs * 1000; diff --git a/wiretap/hcidump.c b/wiretap/hcidump.c index a57a855b40..b11b91c9ac 100644 --- a/wiretap/hcidump.c +++ b/wiretap/hcidump.c @@ -47,6 +47,7 @@ static gboolean hcidump_read_packet(FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = GUINT32_FROM_LE(dh.ts_sec); rec->ts.nsecs = GUINT32_FROM_LE(dh.ts_usec) * 1000; diff --git a/wiretap/i4btrace.c b/wiretap/i4btrace.c index 3b95e5ff91..09251bd071 100644 --- a/wiretap/i4btrace.c +++ b/wiretap/i4btrace.c @@ -245,6 +245,7 @@ i4b_read_rec(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.len = length; diff --git a/wiretap/ipfix.c b/wiretap/ipfix.c index 020e9895f4..15d8b1ad26 100644 --- a/wiretap/ipfix.c +++ b/wiretap/ipfix.c @@ -155,6 +155,7 @@ ipfix_read_message(FILE_T fh, wtap_rec *rec, Buffer *buf, int *err, gchar **err_ */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.len = msg_hdr.message_length; rec->rec_header.packet_header.caplen = msg_hdr.message_length; diff --git a/wiretap/iseries.c b/wiretap/iseries.c index 96ca92b638..be1469a773 100644 --- a/wiretap/iseries.c +++ b/wiretap/iseries.c @@ -768,6 +768,7 @@ iseries_parse_packet (wtap * wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_CAP_LEN; /* diff --git a/wiretap/k12.c b/wiretap/k12.c index 730ae5abc3..a667a98096 100644 --- a/wiretap/k12.c +++ b/wiretap/k12.c @@ -596,6 +596,7 @@ process_packet_data(wtap_rec *rec, Buffer *target, guint8 *buffer, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; ts = pntoh64(buffer + K12_PACKET_TIMESTAMP); diff --git a/wiretap/k12text.l b/wiretap/k12text.l index 257ce6fdd6..8133b93497 100644 --- a/wiretap/k12text.l +++ b/wiretap/k12text.l @@ -253,6 +253,7 @@ k12text_set_headers(wtap_rec *rec, k12text_state_t *state, int *err, gchar **err_info) { rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->ts.secs = 946681200 + (3600*state->g_h) + (60*state->g_m) + state->g_s; diff --git a/wiretap/lanalyzer.c b/wiretap/lanalyzer.c index 4f74b77078..c9357c0f56 100644 --- a/wiretap/lanalyzer.c +++ b/wiretap/lanalyzer.c @@ -549,6 +549,7 @@ static gboolean lanalyzer_read_trace_record(wtap *wth, FILE_T fh, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; time_low = pletoh16(&descriptor[8]); diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c index 204ffc0c2b..9099c143c3 100644 --- a/wiretap/libpcap.c +++ b/wiretap/libpcap.c @@ -897,6 +897,7 @@ libpcap_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, packet_size -= phdr_len; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; /* Update the timestamp, if not already done */ diff --git a/wiretap/log3gpp.c b/wiretap/log3gpp.c index 893538afb6..96afbb6887 100644 --- a/wiretap/log3gpp.c +++ b/wiretap/log3gpp.c @@ -286,6 +286,7 @@ gboolean log3gpp_read(wtap* wth, wtap_rec* rec, Buffer* buf, /* All packets go to 3GPP protocol stub dissector */ rec->rec_header.packet_header.pkt_encap = WTAP_ENCAP_LOG_3GPP; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; /* Set data_offset to the beginning of the line we're returning. @@ -411,6 +412,7 @@ log3gpp_seek_read(wtap *wth, gint64 seek_off, /* Make sure all packets go to log3gpp dissector */ rec->rec_header.packet_header.pkt_encap = WTAP_ENCAP_LOG_3GPP; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; /* Fill in timestamp (capture base + packet offset) */ diff --git a/wiretap/logcat.c b/wiretap/logcat.c index 765fcc3b78..f4f8bef6d6 100644 --- a/wiretap/logcat.c +++ b/wiretap/logcat.c @@ -198,6 +198,7 @@ static gboolean logcat_read_packet(struct logcat_phdr *logcat, FILE_T fh, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = (time_t) GINT32_FROM_LE(log_entry->sec); rec->ts.nsecs = GINT32_FROM_LE(log_entry->nsec); diff --git a/wiretap/logcat_text.c b/wiretap/logcat_text.c index 41359166eb..25f6907f1b 100644 --- a/wiretap/logcat_text.c +++ b/wiretap/logcat_text.c @@ -224,6 +224,7 @@ static gboolean logcat_text_read_packet(FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->rec_header.packet_header.caplen = (guint32)strlen(cbuff); rec->rec_header.packet_header.len = rec->rec_header.packet_header.caplen; diff --git a/wiretap/mp2t.c b/wiretap/mp2t.c index 352fa6b3ef..f9e7bbce4c 100644 --- a/wiretap/mp2t.c +++ b/wiretap/mp2t.c @@ -66,6 +66,7 @@ mp2t_read_packet(mp2t_filetype_t *mp2t, FILE_T fh, gint64 offset, return FALSE; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); /* XXX - relative, not absolute, time stamps */ rec->presence_flags = WTAP_HAS_TS; diff --git a/wiretap/mpeg.c b/wiretap/mpeg.c index 7c35b1580a..fc60e66419 100644 --- a/wiretap/mpeg.c +++ b/wiretap/mpeg.c @@ -173,6 +173,7 @@ mpeg_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, return FALSE; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = 0; /* we may or may not have a time stamp */ if (!is_random) { diff --git a/wiretap/mplog.c b/wiretap/mplog.c index e66f365be3..e27400adf1 100644 --- a/wiretap/mplog.c +++ b/wiretap/mplog.c @@ -175,6 +175,7 @@ static gboolean mplog_read_packet(FILE_T fh, wtap_rec *rec, start_p[3] = pkt_bytes & 0xFF; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->rec_header.packet_header.pkt_encap = WTAP_ENCAP_ISO14443; rec->presence_flags = WTAP_HAS_TS | WTAP_HAS_CAP_LEN; rec->ts.secs = (time_t)((pkt_ctr*10)/(1000*1000*1000)); diff --git a/wiretap/netmon.c b/wiretap/netmon.c index cb4b6e399a..df3bf02c62 100644 --- a/wiretap/netmon.c +++ b/wiretap/netmon.c @@ -1077,6 +1077,7 @@ netmon_process_record(wtap *wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); /* * If this is an ATM packet, the first diff --git a/wiretap/netscaler.c b/wiretap/netscaler.c index 1bd4b0adc7..5e92daef33 100644 --- a/wiretap/netscaler.c +++ b/wiretap/netscaler.c @@ -1128,6 +1128,7 @@ static gboolean nstrace_set_start_time(wtap *wth, int file_version, int *err, return FALSE;\ }\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ FULLPART##SIZEDEFV##ver((rec),type,ver);\ TRACE_V##ver##_REC_LEN_OFF((rec),v##ver##_##fullpart,type,pktrace##fullpart##_v##ver);\ @@ -1307,6 +1308,7 @@ static gboolean nstrace_read_v10(wtap *wth, wtap_rec *rec, Buffer *buf, return FALSE;\ }\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ FULLPART##SIZEDEFV##ver((rec),fp,ver);\ TRACE_V##ver##_REC_LEN_OFF((rec),enumprefix,type,structname);\ @@ -1507,6 +1509,7 @@ static gboolean nstrace_read_v20(wtap *wth, wtap_rec *rec, Buffer *buf, return FALSE;\ }\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ FULLPART##SIZEDEFV##ver((rec),fp,ver);\ TRACE_V##ver##_REC_LEN_OFF((rec),enumprefix,type,structname);\ @@ -1706,6 +1709,7 @@ static gboolean nstrace_read_v30(wtap *wth, wtap_rec *rec, Buffer *buf, do {\ nspr_pktrace##fullpart##_v##ver##_t *type = (nspr_pktrace##fullpart##_v##ver##_t *) pd;\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ FULLPART##SIZEDEFV##ver((rec),type,ver);\ TRACE_V##ver##_REC_LEN_OFF(rec,v##ver##_##fullpart,type,pktrace##fullpart##_v##ver);\ @@ -1800,6 +1804,7 @@ static gboolean nstrace_seek_read_v10(wtap *wth, gint64 seek_off, do {\ nspr_##structname##_t *fp= (nspr_##structname##_t*)pd;\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ FULLPART##SIZEDEFV##ver((rec),fp,ver);\ TRACE_V##ver##_REC_LEN_OFF((rec),enumprefix,type,structname);\ @@ -1924,6 +1929,7 @@ static gboolean nstrace_seek_read_v20(wtap *wth, gint64 seek_off, do {\ nspr_##structname##_t *fp= (nspr_##structname##_t*)pd;\ (rec)->rec_type = REC_TYPE_PACKET;\ + (rec)->block = wtap_block_create(WTAP_BLOCK_PACKET);\ TIMEDEFV##ver((rec),fp,type);\ SETETHOFFSET_##ver(rec);\ FULLPART##SIZEDEFV##ver((rec),fp,ver);\ diff --git a/wiretap/netscreen.c b/wiretap/netscreen.c index 18fcf10f5f..de872cdb8b 100644 --- a/wiretap/netscreen.c +++ b/wiretap/netscreen.c @@ -265,6 +265,7 @@ parse_netscreen_packet(FILE_T fh, wtap_rec *rec, Buffer* buf, gchar dststr[13]; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; /* Suppress compiler warnings */ memset(cap_int, 0, sizeof(cap_int)); diff --git a/wiretap/nettl.c b/wiretap/nettl.c index 0e0d21a24c..e9b43a82aa 100644 --- a/wiretap/nettl.c +++ b/wiretap/nettl.c @@ -542,6 +542,7 @@ nettl_read_rec(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, return FALSE; } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->rec_header.packet_header.len = length - padlen; if (caplen < padlen) { diff --git a/wiretap/nettrace_3gpp_32_423.c b/wiretap/nettrace_3gpp_32_423.c index 2793620b91..a68a1611a4 100644 --- a/wiretap/nettrace_3gpp_32_423.c +++ b/wiretap/nettrace_3gpp_32_423.c @@ -256,6 +256,7 @@ nettrace_msg_to_packet(nettrace_3gpp_32_423_file_info_t *file_info, wtap_rec *re prev_pos = curr_pos = input + CLEN(c_s_msg); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = 0; /* start out assuming no special features */ rec->ts.secs = 0; rec->ts.nsecs = 0; diff --git a/wiretap/netxray.c b/wiretap/netxray.c index e450d703d7..f62734420c 100644 --- a/wiretap/netxray.c +++ b/wiretap/netxray.c @@ -1621,6 +1621,7 @@ netxray_process_rec_header(wtap *wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); if (netxray->version_major == 0) { rec->presence_flags = WTAP_HAS_TS; t = (double)pletoh32(&hdr.old_hdr.timelo) diff --git a/wiretap/observer.c b/wiretap/observer.c index 91a80af93e..933df9223d 100644 --- a/wiretap/observer.c +++ b/wiretap/observer.c @@ -546,6 +546,7 @@ process_packet_header(wtap *wth, packet_entry_header *packet_header, { /* set the wiretap record metadata fields */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->rec_header.packet_header.pkt_encap = observer_to_wtap_encap(packet_header->network_type); if(wth->file_encap == WTAP_ENCAP_FIBRE_CHANNEL_FC2_WITH_FRAME_DELIMS) { diff --git a/wiretap/packetlogger.c b/wiretap/packetlogger.c index 31506cba6a..54cdec3900 100644 --- a/wiretap/packetlogger.c +++ b/wiretap/packetlogger.c @@ -366,6 +366,7 @@ packetlogger_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->rec_header.packet_header.len = pl_hdr.len - 8; diff --git a/wiretap/pppdump.c b/wiretap/pppdump.c index 7c72ccf74f..1ce6368fa0 100644 --- a/wiretap/pppdump.c +++ b/wiretap/pppdump.c @@ -320,6 +320,7 @@ pppdump_set_phdr(wtap_rec *rec, int num_bytes, direction_enum direction) { rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->rec_header.packet_header.len = num_bytes; rec->rec_header.packet_header.caplen = num_bytes; rec->rec_header.packet_header.pkt_encap = WTAP_ENCAP_PPP_WITH_PHDR; diff --git a/wiretap/radcom.c b/wiretap/radcom.c index 7f05100eb9..28e78c5c11 100644 --- a/wiretap/radcom.c +++ b/wiretap/radcom.c @@ -320,6 +320,7 @@ radcom_read_rec(wtap *wth, FILE_T fh, wtap_rec *rec, Buffer *buf, */ rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; tm.tm_year = pletoh16(&hdr.date.year)-1900; diff --git a/wiretap/snoop.c b/wiretap/snoop.c index e5a9d966e0..ee0d43d7da 100644 --- a/wiretap/snoop.c +++ b/wiretap/snoop.c @@ -609,6 +609,7 @@ snoop_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->ts.secs = g_ntohl(hdr.ts_sec); rec->ts.nsecs = g_ntohl(hdr.ts_usec) * 1000; diff --git a/wiretap/stanag4607.c b/wiretap/stanag4607.c index db46c446fc..24f35a2862 100644 --- a/wiretap/stanag4607.c +++ b/wiretap/stanag4607.c @@ -67,6 +67,7 @@ static gboolean stanag4607_read_file(wtap *wth, FILE_T fh, wtap_rec *rec, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); /* The next 4 bytes are the packet length */ packet_size = pntoh32(&stanag_pkt_hdr[2]); diff --git a/wiretap/systemd_journal.c b/wiretap/systemd_journal.c index 557eedcfd7..98f51ccd59 100644 --- a/wiretap/systemd_journal.c +++ b/wiretap/systemd_journal.c @@ -230,6 +230,7 @@ systemd_journal_read_export_entry(FILE_T fh, wtap_rec *rec, Buffer *buf, int *er } rec->rec_type = REC_TYPE_SYSTEMD_JOURNAL_EXPORT; + rec->block = wtap_block_create(WTAP_BLOCK_SYSTEMD_JOURNAL_EXPORT); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->rec_header.systemd_journal_export_header.record_len = (guint32) fld_end; diff --git a/wiretap/toshiba.c b/wiretap/toshiba.c index 912af6a803..19baf7e562 100644 --- a/wiretap/toshiba.c +++ b/wiretap/toshiba.c @@ -314,6 +314,7 @@ parse_toshiba_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, } rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; rec->ts.secs = hr * 3600 + min * 60 + sec; rec->ts.nsecs = csec * 10000000; diff --git a/wiretap/visual.c b/wiretap/visual.c index 8b6035f54d..bc0ea26ad5 100644 --- a/wiretap/visual.c +++ b/wiretap/visual.c @@ -331,6 +331,7 @@ visual_read_packet(wtap *wth, FILE_T fh, wtap_rec *rec, packet_size = pletoh16(&vpkt_hdr.incl_len); rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN; /* Set the packet time and length. */ diff --git a/wiretap/vms.c b/wiretap/vms.c index 5887d0e0f3..600282e506 100644 --- a/wiretap/vms.c +++ b/wiretap/vms.c @@ -416,6 +416,7 @@ parse_vms_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, int *err, gchar **err_in tm.tm_isdst = -1; rec->rec_type = REC_TYPE_PACKET; + rec->block = wtap_block_create(WTAP_BLOCK_PACKET); rec->presence_flags = WTAP_HAS_TS; rec->ts.secs = mktime(&tm); rec->ts.nsecs = csec * 10000000; diff --git a/wiretap/vwr.c b/wiretap/vwr.c index 58201373eb..7ecf018150 100644 --- a/wiretap/vwr.c +++ b/wiretap/vwr.c @@ -1285,6 +1285,7 @@ static gboolean vwr_read_s1_W_rec(vwr_t *vwr, wtap_rec *record, record->rec_header.packet_header.pkt_encap = WTAP_ENCAP_IXVERIWAVE; record->rec_type = REC_TYPE_PACKET; + record->block = wtap_block_create(WTAP_BLOCK_PACKET); record->presence_flags = WTAP_HAS_TS; ws_buffer_assure_space(buf, record->rec_header.packet_header.caplen); @@ -1700,6 +1701,7 @@ static gboolean vwr_read_s2_W_rec(vwr_t *vwr, wtap_rec *record, record->ts.nsecs = (int)(s_usec * 1000); record->rec_type = REC_TYPE_PACKET; + record->block = wtap_block_create(WTAP_BLOCK_PACKET); record->presence_flags = WTAP_HAS_TS; ws_buffer_assure_space(buf, record->rec_header.packet_header.caplen); @@ -1880,6 +1882,7 @@ static gboolean vwr_read_s3_W_rec(vwr_t *vwr, wtap_rec *record, record->ts.nsecs = (int)(s_usec * 1000); record->rec_type = REC_TYPE_PACKET; + record->block = wtap_block_create(WTAP_BLOCK_PACKET); record->presence_flags = WTAP_HAS_TS; ws_buffer_assure_space(buf, record->rec_header.packet_header.caplen); @@ -2212,6 +2215,7 @@ static gboolean vwr_read_s3_W_rec(vwr_t *vwr, wtap_rec *record, record->ts.nsecs = (int)(s_usec * 1000); record->rec_type = REC_TYPE_PACKET; + record->block = wtap_block_create(WTAP_BLOCK_PACKET); record->presence_flags = WTAP_HAS_TS; ws_buffer_assure_space(buf, record->rec_header.packet_header.caplen); @@ -2721,6 +2725,7 @@ static gboolean vwr_read_rec_data_ethernet(vwr_t *vwr, wtap_rec *record, record->ts.nsecs = (int)(s_usec * 1000); record->rec_type = REC_TYPE_PACKET; + record->block = wtap_block_create(WTAP_BLOCK_PACKET); record->presence_flags = WTAP_HAS_TS; /*etap_hdr.vw_ip_length = (guint16)ip_len;*/ diff --git a/wiretap/wtap.c b/wiretap/wtap.c index 5ec3286d4f..e18d797a2e 100644 --- a/wiretap/wtap.c +++ b/wiretap/wtap.c @@ -1542,6 +1542,13 @@ wtap_read(wtap *wth, wtap_rec *rec, Buffer *buf, int *err, */ if (*err == 0) *err = file_error(wth->fh, err_info); + if (rec->block != NULL) { + /* + * Unreference any block created for this record. + */ + wtap_block_unref(rec->block); + rec->block = NULL; + } return FALSE; /* failure */ } @@ -1697,8 +1704,16 @@ wtap_seek_read(wtap *wth, gint64 seek_off, wtap_rec *rec, Buffer *buf, *err = 0; *err_info = NULL; - if (!wth->subtype_seek_read(wth, seek_off, rec, buf, err, err_info)) + if (!wth->subtype_seek_read(wth, seek_off, rec, buf, err, err_info)) { + if (rec->block != NULL) { + /* + * Unreference any block created for this record. + */ + wtap_block_unref(rec->block); + rec->block = NULL; + } return FALSE; + } /* * Is this a packet record?