How can I get a new tvbuff that starts at an offset within a given

tvbuff and runs to the end of the tvbuff?  Let me count the ways....

Replace a bunch of different ways of doing that (some incorrect, in that
they're not properly handling tvbuffs where the captured and reported
lengths are different) with tvb_new_subset_remaining().

svn path=/trunk/; revision=47751
This commit is contained in:
Guy Harris 2013-02-19 23:17:07 +00:00
parent 5a5d872639
commit 29715ccc8f
48 changed files with 76 additions and 102 deletions

View File

@ -907,7 +907,7 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
if (len2 <= 0)
return offset;
buffer = (guchar *)tvb_memdup(tvb, offset, len2);
epsem_buffer = tvb_new_subset(tvb, offset, -1, -1);
epsem_buffer = tvb_new_subset_remaining(tvb, offset);
if (c1222_decrypt) {
if (!decrypt_packet(buffer, len2, FALSE)) {
#ifdef HAVE_LIBGCRYPT
@ -923,7 +923,7 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
break;
default:
/* it's not encrypted */
epsem_buffer = tvb_new_subset(tvb, offset, -1, -1);
epsem_buffer = tvb_new_subset_remaining(tvb, offset);
}
/* it's only encrypted if we have an undecrypted payload */
if (encrypted) {

View File

@ -967,7 +967,7 @@ one_more_pdu:
* same blob
*/
if(tvb_length_remaining(tvb, offset)>=6){
tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), -1);
tvb = tvb_new_subset_remaining(tvb, offset);
offset = 0;
goto one_more_pdu;

View File

@ -145,7 +145,7 @@ NameData TYPE = FT_STRING DISPLAY = BASE_NONE
#.FN_BODY Extension/extensionArgument
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (!dissector_try_string(extension_dissector_table, extension_oid, next_tvb, actx->pinfo, tree)) {
proto_item *item=NULL;
proto_tree *next_tree=NULL;

View File

@ -207,7 +207,7 @@ call_ros_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *p
{
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if(!ros_try_string(oid, next_tvb, pinfo, tree) &&
!dissector_try_string(ros_oid_dissector_table, oid, next_tvb, pinfo, tree)){

View File

@ -145,7 +145,7 @@ call_rtse_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *
{
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if(!dissector_try_string(rtse_oid_dissector_table, oid, next_tvb, pinfo, tree)){
proto_item *item=proto_tree_add_text(tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "RTSE: Dissector for OID:%s not implemented. Contact Wireshark developers if you want this supported", oid);
proto_tree *next_tree=proto_item_add_subtree(item, ett_rtse_unknown);

View File

@ -303,7 +303,7 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
if ( kiss_type == KISS_DATA_FRAME )
{
saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset( tvb, offset, -1, -1 );
next_tvb = tvb_new_subset_remaining( tvb, offset );
call_dissector( ax25_handle, next_tvb, pinfo, parent_tree );
pinfo->private_data = saved_private_data;
}

View File

@ -198,7 +198,7 @@ dissect_ax25_nol3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
ax25_nol3_tree = proto_item_add_subtree( ti, ett_ax25_nol3 );
saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, offset);
dissected = FALSE;
if ( gPREF_APRS )

View File

@ -99,7 +99,7 @@ dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
saved_private_data = pinfo->private_data;
/* XXX - use the length */
next_tvb = tvb_new_subset( tvb, offset, -1, -1 );
next_tvb = tvb_new_subset_remaining( tvb, offset );
call_dissector( ax25_handle, next_tvb, pinfo, parent_tree );
pinfo->private_data = saved_private_data;
}

View File

@ -1039,10 +1039,10 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
get_sep_type(pinfo->fd->num, cid_type_data->sep->seid));
if (cid_type_data->sep->media_type == MEDIA_TYPE_AUDIO) {
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_with_data(bta2dp_handle, next_tvb, pinfo, tree, &cid_type_data->sep->codec);
} else if (cid_type_data->sep->media_type == MEDIA_TYPE_VIDEO) {
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_with_data(btvdp_handle, next_tvb, pinfo, tree, &cid_type_data->sep->codec);
} else {
ti = proto_tree_add_item(tree, proto_btavdtp, tvb, offset, -1, ENC_NA);

View File

@ -373,9 +373,7 @@ dissect_btbnep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ethertype(type, tvb, offset, pinfo, tree, btbnep_tree,
hf_btbnep_type, 0, 0);
} else {
next_tvb = tvb_new_subset(tvb, offset,
tvb_length_remaining(tvb, offset),
tvb_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector(data_handle, next_tvb, pinfo, tree);
}
}

View File

@ -1325,7 +1325,7 @@ dissect_bthci_evt_loopback_command(tvbuff_t *tvb, int offset, packet_info *pinfo
{
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), -1);
next_tvb = tvb_new_subset_remaining(tvb, offset);
if(bthci_com_handle){
call_dissector(bthci_com_handle, next_tvb, pinfo, tree);
}

View File

@ -952,7 +952,7 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
if (len2 <= 0)
return offset;
buffer = (guchar *)tvb_memdup(tvb, offset, len2);
epsem_buffer = tvb_new_subset(tvb, offset, -1, -1);
epsem_buffer = tvb_new_subset_remaining(tvb, offset);
if (c1222_decrypt) {
if (!decrypt_packet(buffer, len2, FALSE)) {
#ifdef HAVE_LIBGCRYPT
@ -968,7 +968,7 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_
break;
default:
/* it's not encrypted */
epsem_buffer = tvb_new_subset(tvb, offset, -1, -1);
epsem_buffer = tvb_new_subset_remaining(tvb, offset);
}
/* it's only encrypted if we have an undecrypted payload */
if (encrypted) {

View File

@ -826,7 +826,7 @@ static void dissect_rlc_umts(tvbuff_t *tvb, gint offset,
/* Call UMTS RLC dissector */
if (rlc_umts_handle != 0) {
rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
rlc_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(rlc_umts_handle, rlc_tvb, pinfo, tree, NULL);
}
}
@ -1025,7 +1025,7 @@ static void dissect_rrc_lte(tvbuff_t *tvb, gint offset,
/* Send to RRC dissector, if got here, have sub-dissector and some data left */
if ((protocol_handle != NULL) && (tvb_length_remaining(tvb, offset) > 0)) {
rrc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
rrc_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(protocol_handle, rrc_tvb, pinfo, tree, NULL);
}
}
@ -1283,7 +1283,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, gint offset,
/* Should be at data tag now */
/* Call PDCP LTE dissector */
pdcp_lte_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
pdcp_lte_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(pdcp_lte_handle, pdcp_lte_tvb, pinfo, tree, NULL);
break;
@ -2823,7 +2823,7 @@ dissect_catapult_dct2000(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Try appropriate dissector, if one has been selected */
if (protocol_handle != 0) {
/* Dissect the remainder of the frame using chosen protocol handle */
next_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
next_tvb = tvb_new_subset_remaining(tvb, offset);
sub_dissector_result = call_dissector_only(protocol_handle, next_tvb, pinfo, tree, NULL);
}

View File

@ -865,10 +865,7 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
break;
case DIS_FIELDTYPE_RADIO_DATA:
newtvb = tvb_new_subset(tvb, offset,
tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset)
);
newtvb = tvb_new_subset_remaining(tvb, offset);
proto_tree_add_item(tree, hf_dis_signal_data, newtvb, 0, -1, ENC_NA );
/* ****ck******* need to look for padding bytes */
break;
@ -1029,10 +1026,7 @@ gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode pa
break;
case DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS:
/* just dump the bytes for now. Need to do finish */
newtvb = tvb_new_subset(tvb, offset,
tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset)
);
newtvb = tvb_new_subset_remaining(tvb, offset);
proto_tree_add_item(tree, hf_dis_antenna_pattern_parameter_dump, newtvb, 0, -1, ENC_NA );
break;

View File

@ -2530,7 +2530,7 @@ dissect_eigrp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
switch (opcode) {
case EIGRP_OPC_IPXSAP:
call_dissector(ipxsap_handle,
tvb_new_subset(tvb, EIGRP_HEADER_LENGTH, -1, -1), pinfo,
tvb_new_subset_remaining(tvb, EIGRP_HEADER_LENGTH), pinfo,
eigrp_tree);
break;

View File

@ -93,7 +93,7 @@ dissect_flexnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
/* Call sub-dissectors here */
saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset(tvb, FLEXNET_HDRLEN, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, FLEXNET_HDRLEN);
call_dissector( default_handle , next_tvb, pinfo, parent_tree );

View File

@ -528,7 +528,7 @@ static void dissect_fp_hint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
next_dissector = &data_handle;
}
next_tvb = tvb_new_subset(tvb, hdrlen, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, hdrlen);
call_dissector(*next_dissector, next_tvb, pinfo, tree);
}

View File

@ -314,7 +314,7 @@ dissect_gssapi_work(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if ((tvb_length_remaining(gss_tvb, start_offset)>16) &&
((tvb_memeql(gss_tvb, start_offset, "\x01\x00\x00\x00", 4) == 0))) {
return_offset = call_dissector(ntlmssp_payload_handle,
tvb_new_subset(gss_tvb, start_offset, -1, -1),
tvb_new_subset_remaining(gss_tvb, start_offset),
pinfo, subtree);
pinfo->gssapi_data_encrypted = TRUE;
goto done;
@ -323,12 +323,12 @@ dissect_gssapi_work(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
((tvb_memeql(gss_tvb, start_offset, "\x01\x00\x00\x00", 4) == 0))) {
if( is_verifier ) {
return_offset = call_dissector(ntlmssp_verf_handle,
tvb_new_subset(gss_tvb, start_offset, -1, -1),
tvb_new_subset_remaining(gss_tvb, start_offset),
pinfo, subtree);
}
else if( pinfo->gssapi_encrypted_tvb ) {
return_offset = call_dissector(ntlmssp_data_only_handle,
tvb_new_subset(pinfo->gssapi_encrypted_tvb, 0, -1, -1),
tvb_new_subset_remaining(pinfo->gssapi_encrypted_tvb, 0),
pinfo, subtree);
pinfo->gssapi_data_encrypted = TRUE;
}

View File

@ -129,7 +129,7 @@ dissect_gvrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_text(gvrp_tree, tvb, GARP_PROTOCOL_ID, (int)sizeof(guint16),
" (Warning: this version of Wireshark only knows about protocol id = 1)");
call_dissector(data_handle,
tvb_new_subset(tvb, GARP_PROTOCOL_ID + (int)sizeof(guint16), -1, -1),
tvb_new_subset_remaining(tvb, GARP_PROTOCOL_ID + (int)sizeof(guint16)),
pinfo, tree);
return;
}

View File

@ -237,7 +237,7 @@ static gboolean dissect_h1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
THROW(ReportedBoundsError);
position += tvb_get_guint8(tvb,offset + position + 1); /* Goto next section */
} /* ..while */
next_tvb = tvb_new_subset(tvb, offset+tvb_get_guint8(tvb,offset+2), -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, offset+tvb_get_guint8(tvb,offset+2));
call_dissector(data_handle,next_tvb, pinfo, tree);
return TRUE;

View File

@ -119,7 +119,7 @@ dissect_hsr_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(hsr_tree, hf_type,
tvb, HSR_TOTAL_LENGTH,2, ENC_BIG_ENDIAN);
next_tvb = tvb_new_subset (tvb, HSR_TOTAL_LENGTH + 2, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, HSR_TOTAL_LENGTH + 2);
etype = tvb_get_ntohs(tvb, HSR_TOTAL_LENGTH);

View File

@ -1990,7 +1990,7 @@ dissect_ipcomp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offsetof(struct ipcomp, comp_cpi), 2,
g_ntohs(ipcomp.comp_cpi));
data = tvb_new_subset(tvb, sizeof(struct ipcomp), -1, -1);
data = tvb_new_subset_remaining(tvb, sizeof(struct ipcomp));
call_dissector(data_handle, data, pinfo, ipcomp_tree);
/*

View File

@ -694,7 +694,7 @@ ethernettap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_t
}
/* Grab the rest of the frame. */
next_tvb = tvb_new_subset(tvb, length, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, length);
/* dissect the ethernet header next */
call_dissector(ethernet_handle, next_tvb, pinfo, tree);
@ -945,7 +945,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
pinfo->pseudo_header->ieee_802_11.fcs_len = 0;
/* Grab the rest of the frame. */
next_tvb = tvb_new_subset(tvb, length, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, length);
#if 0 /* XXX: 'hdr_fcs_ti' is never set so the following code will never be executed ? */
/* If we had an in-header FCS, check it. */

View File

@ -149,7 +149,7 @@ dissect_jmirror(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset += SESSION_ID_SZ;
/* Create a buffer pointer for the next dissector */
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, offset);
/* Call the next dissector based on the heurstics and return the number of bytes dissected */
return MIRROR_HDR_SZ + call_dissector(dissector_handle, next_tvb, pinfo, tree);

View File

@ -2150,7 +2150,7 @@ dissect_krb5_decrypt_PA_ENC_TIMESTAMP (proto_tree *tree, tvbuff_t *tvb, int offs
if(!plaintext){
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
plaintext=decrypt_krb5_data(tree, actx->pinfo, 1, next_tvb, PA_ENC_TIMESTAMP_etype, NULL);
}
@ -3529,7 +3529,7 @@ dissect_krb5_decrypt_PRIV (proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx
if(!plaintext){
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
plaintext=decrypt_krb5_data(tree, actx->pinfo, 13, next_tvb, PRIV_etype, NULL);
}
@ -3677,7 +3677,7 @@ dissect_krb5_decrypt_EncKrbCredPart (proto_tree *tree, tvbuff_t *tvb, int offset
int length;
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
length=tvb_length_remaining(tvb, offset);
@ -3834,7 +3834,7 @@ dissect_krb5_decrypt_enc_authorization_data(proto_tree *tree, tvbuff_t *tvb, int
int length;
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
length=tvb_length_remaining(tvb, offset);
@ -4029,7 +4029,7 @@ dissect_krb5_decrypt_authenticator_data (proto_tree *tree, tvbuff_t *tvb, int of
int length;
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
length=tvb_length_remaining(tvb, offset);
@ -4118,7 +4118,7 @@ dissect_krb5_decrypt_Ticket_data (proto_tree *tree, tvbuff_t *tvb, int offset, a
int length;
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
length=tvb_length_remaining(tvb, offset);
@ -4259,7 +4259,7 @@ dissect_krb5_decrypt_AP_REP_data(proto_tree *tree, tvbuff_t *tvb, int offset, as
if(!plaintext){
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
plaintext=decrypt_krb5_data(tree, actx->pinfo, 12, next_tvb, AP_REP_etype, NULL);
}
@ -4358,7 +4358,7 @@ dissect_krb5_decrypt_KDC_REP_data (proto_tree *tree, tvbuff_t *tvb, int offset,
int length;
tvbuff_t *next_tvb;
next_tvb=tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb=tvb_new_subset_remaining(tvb, offset);
length=tvb_length_remaining(tvb, offset);
@ -5433,9 +5433,7 @@ static int wrap_dissect_gss_kerb(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
tvbuff_t *auth_tvb;
auth_tvb = tvb_new_subset(
tvb, offset, tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset));
auth_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_kerberos_main(auth_tvb, pinfo, tree, FALSE, NULL);

View File

@ -3930,7 +3930,7 @@ one_more_pdu:
* same blob
*/
if(tvb_length_remaining(tvb, offset)>=6){
tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), -1);
tvb = tvb_new_subset_remaining(tvb, offset);
offset = 0;
goto one_more_pdu;

View File

@ -85,7 +85,7 @@ static void dissect_mac_lte_framed(tvbuff_t *tvb, packet_info *pinfo,
/* OK, now dissect as MAC LTE */
/* Create tvb that starts at actual MAC PDU */
mac_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
mac_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_only(mac_lte_handle, mac_tvb, pinfo, tree, NULL);
}

View File

@ -1291,7 +1291,7 @@ static gboolean dissect_mac_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
/* OK, now dissect as MAC LTE */
/* Create tvb that starts at actual MAC PDU */
mac_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
mac_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_mac_lte(mac_tvb, pinfo, tree);
return TRUE;
@ -1791,7 +1791,7 @@ static void dissect_bch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (global_mac_lte_attempt_rrc_decode) {
/* Attempt to decode payload using LTE RRC dissector */
tvbuff_t *rrc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
tvbuff_t *rrc_tvb = tvb_new_subset_remaining(tvb, offset);
/* Get appropriate dissector handle */
dissector_handle_t protocol_handle = 0;
@ -1836,7 +1836,7 @@ static void dissect_pch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (global_mac_lte_attempt_rrc_decode) {
/* Attempt to decode payload using LTE RRC dissector */
tvbuff_t *rrc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
tvbuff_t *rrc_tvb = tvb_new_subset_remaining(tvb, offset);
/* Get appropriate dissector handle */
dissector_handle_t protocol_handle = find_dissector("lte_rrc.pcch");

View File

@ -516,7 +516,7 @@ dissect_dsmcc_ddb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_tree_add_item(tree, hf_dsmcc_ddb_block_number, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
sub_tvb = tvb_new_subset(tvb, offset, -1, -1);
sub_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector(data_handle, sub_tvb, pinfo, top_tree);
}

View File

@ -315,7 +315,7 @@ dissect_netanalyzer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (dissect_netanalyzer_common(tvb, pinfo, tree))
{
/* hand off to eth dissector with the new tvb subset */
next_tvb = tvb_new_subset(tvb, 4, tvb_length(tvb)-4, tvb_reported_length(tvb)-4);
next_tvb = tvb_new_subset_remaining(tvb, 4);
call_dissector(eth_dissector_handle, next_tvb, pinfo, tree);
}
}
@ -350,7 +350,7 @@ dissect_netanalyzer_transparent(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
* use data dissector instead */
ti = proto_tree_add_text(tree, tvb, 4, tvb_length(tvb)-4, "Raw packet data");
transparent_payload_tree = proto_item_add_subtree(ti, ett_netanalyzer_transparent);
next_tvb = tvb_new_subset(tvb, 4, tvb_length(tvb)-4, tvb_reported_length(tvb)-4);
next_tvb = tvb_new_subset_remaining(tvb, 4);
call_dissector(data_dissector_handle, next_tvb, pinfo, transparent_payload_tree);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "netANALYZER");

View File

@ -449,7 +449,7 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Call sub-dissectors here */
saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, offset);
switch ( op_code )
{
@ -493,7 +493,7 @@ dissect_netrom_routing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset(tvb, 7, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, 7);
call_dissector( default_handle , next_tvb, pinfo, tree );

View File

@ -212,7 +212,7 @@ dissect_nstrace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Dissect as Ethernet */
offset = pnstr->eth_offset;
next_tvb_eth_client = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb_eth_client = tvb_new_subset_remaining(tvb, offset);
call_dissector(eth_withoutfcs_handle, next_tvb_eth_client, pinfo, tree);
}

View File

@ -2527,9 +2527,7 @@ wrap_dissect_ntlmssp_payload_only(tvbuff_t *tvb, tvbuff_t *auth_tvb _U_,
{
tvbuff_t *data_tvb;
data_tvb = tvb_new_subset(
tvb, offset, tvb_length_remaining(tvb, offset),
tvb_length_remaining(tvb, offset));
data_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_ntlmssp_payload_only(data_tvb, pinfo, NULL, NULL);
return pinfo->gssapi_decrypted_tvb;
}
@ -2678,9 +2676,7 @@ wrap_dissect_ntlmssp(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
tvbuff_t *auth_tvb;
auth_tvb = tvb_new_subset(
tvb, offset, tvb_length_remaining(tvb, offset),
tvb_length_remaining(tvb, offset));
auth_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_ntlmssp(auth_tvb, pinfo, tree);
@ -2693,9 +2689,7 @@ wrap_dissect_ntlmssp_verf(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
tvbuff_t *auth_tvb;
auth_tvb = tvb_new_subset(
tvb, offset, tvb_length_remaining(tvb, offset),
tvb_length_remaining(tvb, offset));
auth_tvb = tvb_new_subset_remaining(tvb, offset);
return dissect_ntlmssp_verf(auth_tvb, pinfo, tree, NULL);
}

View File

@ -968,7 +968,7 @@ static gboolean dissect_pdcp_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
/* OK, now dissect as PDCP LTE */
/* Create tvb that starts at actual PDCP PDU */
pdcp_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
pdcp_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_pdcp_lte(pdcp_tvb, pinfo, tree);
return TRUE;
}

View File

@ -2073,7 +2073,7 @@ dissect_qsig_T_extensionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
#line 146 "../../asn1/qsig/qsig.cnf"
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (!dissector_try_string(extension_dissector_table, extension_oid, next_tvb, actx->pinfo, tree)) {
proto_item *item=NULL;
proto_tree *next_tree=NULL;

View File

@ -1918,7 +1918,7 @@ static void dissect_rlc_lte_tm(tvbuff_t *tvb, packet_info *pinfo,
}
if (global_rlc_lte_call_rrc_for_ccch) {
tvbuff_t *rrc_tvb = tvb_new_subset(tvb, offset, -1, tvb_length_remaining(tvb, offset));
tvbuff_t *rrc_tvb = tvb_new_subset_remaining(tvb, offset);
volatile dissector_handle_t protocol_handle = 0;
switch (p_rlc_lte_info->channelType) {
@ -2689,7 +2689,7 @@ static gboolean dissect_rlc_lte_heur(tvbuff_t *tvb, packet_info *pinfo,
/* OK, now dissect as RLC LTE */
/* Create tvb that starts at actual RLC PDU */
rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
rlc_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_rlc_lte(rlc_tvb, pinfo, tree);
return TRUE;
}

View File

@ -2689,7 +2689,7 @@ dissect_rlc_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
/* OK, now dissect as RLC */
/* Create tvb that starts at actual RLC PDU */
rlc_tvb = tvb_new_subset(tvb, offset, -1, tvb_reported_length(tvb)-offset);
rlc_tvb = tvb_new_subset_remaining(tvb, offset);
switch (channelType) {
case UMTS_CHANNEL_TYPE_UNSPECIFIED:
/* Call relevant dissector according to RLC mode */

View File

@ -261,7 +261,7 @@ call_ros_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *p
{
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if(!ros_try_string(oid, next_tvb, pinfo, tree) &&
!dissector_try_string(ros_oid_dissector_table, oid, next_tvb, pinfo, tree)){

View File

@ -195,7 +195,7 @@ call_rtse_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *
{
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_reported_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if(!dissector_try_string(rtse_oid_dissector_table, oid, next_tvb, pinfo, tree)){
proto_item *item=proto_tree_add_text(tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "RTSE: Dissector for OID:%s not implemented. Contact Wireshark developers if you want this supported", oid);
proto_tree *next_tree=proto_item_add_subtree(item, ett_rtse_unknown);

View File

@ -13546,9 +13546,7 @@ dissect_sfsi_request(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
blob_tree = proto_item_add_subtree(blob_item,
ett_smb_secblob);
blob_tvb = tvb_new_subset(tvb, offset,
tvb_length_remaining(tvb,offset),
tvb_length_remaining(tvb,offset));
blob_tvb = tvb_new_subset_remaining(tvb, offset);
if (tvb_strneql(blob_tvb, 0, "NTLMSSP", 7) == 0) {
call_dissector(ntlmssp_handle, blob_tvb, pinfo, blob_tree);
@ -13604,9 +13602,7 @@ dissect_sfsi_response(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
blob_tree = proto_item_add_subtree(blob_item,
ett_smb_secblob);
blob_tvb = tvb_new_subset(tvb, offset,
tvb_length_remaining(tvb,offset),
tvb_length_remaining(tvb,offset));
blob_tvb = tvb_new_subset_remaining(tvb, offset);
if (tvb_strneql(blob_tvb, 0, "NTLMSSP", 7) == 0) {
call_dissector(ntlmssp_handle, blob_tvb, pinfo, blob_tree);

View File

@ -4169,9 +4169,7 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre
if (next_offset) {
tvbuff_t *next_tvb;
next_tvb = tvb_new_subset(tvb, next_offset,
tvb_length_remaining(tvb, next_offset),
tvb_reported_length_remaining(tvb, next_offset));
next_tvb = tvb_new_subset_remaining(tvb, next_offset);
/* next extra info */
dissect_smb2_NETWORK_INTERFACE_INFO(next_tvb, pinfo, parent_tree);
@ -5298,7 +5296,7 @@ dissect_smb2_create_extra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa
if (chain_offset) {
tvbuff_t *chain_tvb;
chain_tvb = tvb_new_subset(tvb, chain_offset, tvb_length_remaining(tvb, chain_offset), tvb_reported_length_remaining(tvb, chain_offset));
chain_tvb = tvb_new_subset_remaining(tvb, chain_offset);
/* next extra info */
dissect_smb2_create_extra_info(chain_tvb, pinfo, parent_tree, si);

View File

@ -160,7 +160,7 @@ dissect_sync(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
offset += 2;
/* XXX - The payload may not always be present? */
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, offset);
/* XXX - The payload may not always be IP? */
call_dissector(ip_handle, next_tvb, pinfo, tree);
break;

View File

@ -3028,7 +3028,7 @@ dissect_e_dch_t2_or_common_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto
/* Call MAC for this PDU if configured to */
if (preferences_call_mac_dissectors) {
p_add_proto_data(pinfo->fd, proto_umts_mac, mac_is_info);
call_dissector(mac_fdd_edch_type2_handle, tvb_new_subset(tvb, offset, -1, -1), pinfo, top_level_tree);
call_dissector(mac_fdd_edch_type2_handle, tvb_new_subset_remaining(tvb, offset), pinfo, top_level_tree);
}
else {
/* Still show data if not decoding as MAC PDU */

View File

@ -406,7 +406,7 @@ static void dissect_mac_fdd_fach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
channel_type = proto_tree_add_uint(fach_tree, hf_mac_channel, tvb, 0, 0, MAC_CCCH);
PROTO_ITEM_SET_GENERATED(channel_type);
/* CCCH over FACH is always octet aligned */
next_tvb = tvb_new_subset(tvb, 1, tvb_length_remaining(tvb, 1), -1);
next_tvb = tvb_new_subset_remaining(tvb, 1);
call_dissector(rlc_ccch_handle, next_tvb, pinfo, tree);
break;
case TCTF_DCCH_DTCH_FACH_FDD:
@ -448,7 +448,7 @@ static void dissect_mac_fdd_fach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
channel_type = proto_tree_add_uint(fach_tree, hf_mac_channel, tvb, 0, 0, MAC_CTCH);
PROTO_ITEM_SET_GENERATED(channel_type);
/* CTCH over FACH is always octet aligned */
next_tvb = tvb_new_subset(tvb, 1, tvb_length_remaining(tvb, 1), -1);
next_tvb = tvb_new_subset_remaining(tvb, 1);
call_dissector(rlc_ctch_handle, next_tvb, pinfo, tree);
break;
/* july 5: Added support for BCCH*/

View File

@ -2878,7 +2878,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent,
break;
}
next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tvb_length_remaining(tvb, offset));
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (!dissector_try_uint(device_to_dissector, (guint32) (bus_id << 8 | device_address), next_tvb, pinfo, parent)) {
emem_tree_key_t key[4];

View File

@ -1573,8 +1573,7 @@ dissect_zbee_aps_tunnel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui
offset += 8;
/* The remainder is a tunneled APS frame. */
tunnel_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset),
tvb_reported_length_remaining(tvb, offset));
tunnel_tvb = tvb_new_subset_remaining(tvb, offset);
if (tree) root = proto_tree_get_root(tree);
call_dissector(zbee_aps_handle, tunnel_tvb, pinfo, root);
offset = tvb_length(tvb);

View File

@ -403,7 +403,7 @@ static void dissect_opcua_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree
{
/* only show transport header */
bParseService = FALSE;
next_tvb = tvb_new_subset(tvb, 0, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, 0);
}
pinfo->fragmented = bSaveFragmented;

View File

@ -2076,10 +2076,7 @@ static guint dissect_wimaxasncp_backend(
{
tvbuff_t *tlv_tvb;
tlv_tvb = tvb_new_subset(
tvb, offset,
tvb_length(tvb) - offset,
tvb_length(tvb) - offset);
tlv_tvb = tvb_new_subset_remaining(tvb, offset);
offset += dissect_wimaxasncp_tlvs(tlv_tvb, pinfo, tree);
}