From 56a09d24dcdcaddae1cb67a18bbc2fd588c427ed Mon Sep 17 00:00:00 2001 From: Michal Labedzki Date: Wed, 23 Jul 2014 12:26:05 +0200 Subject: [PATCH] Try to fix some buildbot warnings Most interesting are: warning: cannot optimize loop, the loop counter may overflow [-Wunsafe-loop-optimizations] warning: ISO C forbids zero-size array [-Wpedantic] warning: ISO C90 doesn't support unnamed structs/unions [-Wpedantic] warning: cast discards '__attribute__((const))' qualifier from pointer target type [-Wcast-qual warning: initializer element is not computable at load time [enabled by default] Change-Id: I5573c6bdca856a304877d9bef643f8c0fa93cdaf Reviewed-on: https://code.wireshark.org/review/3174 Petri-Dish: Michal Labedzki Tested-by: Petri Dish Buildbot Reviewed-by: Michal Labedzki --- epan/dissectors/packet-btavdtp.c | 1 - epan/dissectors/packet-btbnep.c | 6 +- epan/dissectors/packet-bthci_cmd.c | 2 +- epan/dissectors/packet-btsdp.c | 121 +++++++++++---------------- epan/dissectors/packet-logcat-text.c | 18 ++-- epan/dissectors/packet-usb-audio.c | 4 +- epan/dissectors/packet-usb-com.c | 1 - epan/dissectors/packet-usb.c | 4 +- wiretap/file_access.c | 12 +-- wiretap/file_wrappers.c | 4 + wiretap/logcat.c | 20 +++-- wiretap/logcat.h | 6 +- wiretap/logcat_text.c | 37 ++++---- wiretap/merge.c | 5 +- 14 files changed, 112 insertions(+), 129 deletions(-) diff --git a/epan/dissectors/packet-btavdtp.c b/epan/dissectors/packet-btavdtp.c index 34ed726b6f..fa06c34c29 100644 --- a/epan/dissectors/packet-btavdtp.c +++ b/epan/dissectors/packet-btavdtp.c @@ -1276,7 +1276,6 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ", direction); goto LABEL_data; - break; } l2cap_data = (btl2cap_data_t *) data; diff --git a/epan/dissectors/packet-btbnep.c b/epan/dissectors/packet-btbnep.c index 20a3d27343..6c430b73b1 100644 --- a/epan/dissectors/packet-btbnep.c +++ b/epan/dissectors/packet-btbnep.c @@ -154,7 +154,7 @@ dissect_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) guint16 uuid_dst; guint16 uuid_src; guint16 response_message; - guint list_length; + guint16 list_length; guint i_item; proto_tree_add_item(tree, hf_btbnep_control_type, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -203,7 +203,7 @@ dissect_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) list_length = tvb_get_ntohs(tvb, offset); offset += 2; - for (i_item = 0; i_item < list_length; i_item += 4) { + for (i_item = 0; i_item + 4 > i_item && i_item < list_length; i_item += 4) { proto_tree_add_item(tree, hf_btbnep_network_type_start, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -223,7 +223,7 @@ dissect_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) list_length = tvb_get_ntohs(tvb, offset); offset += 2; - for (i_item = 0; i_item < list_length; i_item += 12) { + for (i_item = 0; i_item + 12 > i_item && i_item < list_length; i_item += 12) { proto_tree_add_item(tree, hf_btbnep_multicast_address_start, tvb, offset, 6, ENC_NA); offset += 6; diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c index 86d5da6d18..5aef3b8a31 100644 --- a/epan/dissectors/packet-bthci_cmd.c +++ b/epan/dissectors/packet-bthci_cmd.c @@ -4988,7 +4988,7 @@ dissect_eir_ad_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) guint8 length; guint8 type; guint8 data_size; - gint end_offset; + gint64 end_offset; guint i_uuid; data_size = tvb_length(tvb); diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c index 6bf6c841e0..420e3d5fc8 100644 --- a/epan/dissectors/packet-btsdp.c +++ b/epan/dissectors/packet-btsdp.c @@ -1237,6 +1237,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, tid_request_t *tid_request; continuation_state_data_t *continuation_state_data; wmem_tree_key_t key[12]; + wmem_tree_t *subtree; guint32 k_interface_id; guint32 k_adapter_id; guint32 k_chandle; @@ -1244,13 +1245,13 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, guint32 k_tid; guint32 k_pdu_type; guint32 k_frame_number; - guint8 *k_continuation_state; + guint32 *k_continuation_state_array; + guint8 *continuation_state; guint32 interface_id; guint32 adapter_id; guint32 chandle; guint32 psm; guint32 frame_number; - guint32 *continuation_state_array; if (new_tvb) *new_tvb = NULL; @@ -1330,14 +1331,10 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, if (tid_request->continuation_state_length > 0) { /* fetch tid_request->continuation_state */ - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = tid_request->continuation_state_length; - memcpy(&k_continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); - continuation_state_array = (guint32 *) k_continuation_state; - - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = tid_request->continuation_state_length; - memcpy(&k_continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); + k_continuation_state_array = (guint32 *) wmem_alloc0(wmem_packet_scope(), 20); + continuation_state = (guint8 *) k_continuation_state_array; + continuation_state[0] = tid_request->continuation_state_length; + memcpy(&continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); k_interface_id = interface_id; k_adapter_id = adapter_id; @@ -1357,15 +1354,15 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, key[4].length = 1; key[4].key = &k_pdu_type; key[5].length = 1; - key[5].key = (guint32 *) &k_continuation_state[0]; + key[5].key = &k_continuation_state_array[0]; key[6].length = 1; - key[6].key = (guint32 *) &k_continuation_state[4]; + key[6].key = &k_continuation_state_array[1]; key[7].length = 1; - key[7].key = (guint32 *) &k_continuation_state[8]; + key[7].key = &k_continuation_state_array[2]; key[8].length = 1; - key[8].key = (guint32 *) &k_continuation_state[12]; + key[8].key = &k_continuation_state_array[3]; key[9].length = 1; - key[9].key = (guint32 *) &k_continuation_state[16]; + key[9].key = &k_continuation_state_array[4]; key[10].length = 1; key[10].key = &k_frame_number; key[11].length = 0; @@ -1377,11 +1374,11 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, continuation_state_data->chandle == chandle && continuation_state_data->psm == psm && continuation_state_data->pdu_type == tid_request->pdu_type && - continuation_state_data->continuation_state[0] == continuation_state_array[0] && - continuation_state_data->continuation_state[1] == continuation_state_array[1] && - continuation_state_data->continuation_state[2] == continuation_state_array[2] && - continuation_state_data->continuation_state[3] == continuation_state_array[3] && - continuation_state_data->continuation_state[4] == continuation_state_array[4]) { + continuation_state_data->continuation_state[0] == k_continuation_state_array[0] && + continuation_state_data->continuation_state[1] == k_continuation_state_array[1] && + continuation_state_data->continuation_state[2] == k_continuation_state_array[2] && + continuation_state_data->continuation_state[3] == k_continuation_state_array[3] && + continuation_state_data->continuation_state[4] == k_continuation_state_array[4]) { tid_request->data = (guint8 *) wmem_alloc(wmem_file_scope(), continuation_state_data->data_length + attribute_list_byte_count); tid_request->data_length = continuation_state_data->data_length + attribute_list_byte_count; memcpy(tid_request->data, continuation_state_data->data, continuation_state_data->data_length); @@ -1443,16 +1440,16 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, } } } else { - guint8 *continuation_state; + guint8 *continuation_state_buffer; guint8 continuation_state_length; guint8 *packet_scope_string; continuation_state_length = tvb_get_guint8(tvb, offset); offset++; - continuation_state = (guint8 *) wmem_alloc(wmem_file_scope(), continuation_state_length); + continuation_state_buffer = (guint8 *) wmem_alloc(wmem_file_scope(), continuation_state_length); packet_scope_string = tvb_bytes_to_ep_str(tvb, offset, continuation_state_length); - memcpy(continuation_state, packet_scope_string, continuation_state_length); + memcpy(continuation_state_buffer, packet_scope_string, continuation_state_length); if (!pinfo->fd->flags.visited) { if (is_request) { @@ -1479,7 +1476,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, tid_request->pdu_type = pdu_type; - tid_request->continuation_state = continuation_state; + tid_request->continuation_state = continuation_state_buffer; tid_request->continuation_state_length = continuation_state_length; wmem_tree_insert32_array(tid_requests, key, tid_request); @@ -1494,22 +1491,16 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, if (tid_request->continuation_state_length > 0) { /* fetch tid_request->continuation_state */ - - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = tid_request->continuation_state_length; - memcpy(&k_continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); - continuation_state_array = (guint32 *) k_continuation_state; - - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = tid_request->continuation_state_length; - memcpy(&k_continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); + k_continuation_state_array = (guint32 *) wmem_alloc0(wmem_packet_scope(), 20); + continuation_state = (guint8 *) k_continuation_state_array; + continuation_state[0] = tid_request->continuation_state_length; + memcpy(&continuation_state[1], tid_request->continuation_state, tid_request->continuation_state_length); k_interface_id = interface_id; k_adapter_id = adapter_id; k_chandle = chandle; k_psm = psm; k_pdu_type = tid_request->pdu_type; - k_frame_number = frame_number; key[0].length = 1; key[0].key = &k_interface_id; @@ -1522,31 +1513,21 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, key[4].length = 1; key[4].key = &k_pdu_type; key[5].length = 1; - key[5].key = (guint32 *) &k_continuation_state[0]; + key[5].key = &k_continuation_state_array[0]; key[6].length = 1; - key[6].key = (guint32 *) &k_continuation_state[4]; + key[6].key = &k_continuation_state_array[1]; key[7].length = 1; - key[7].key = (guint32 *) &k_continuation_state[8]; + key[7].key = &k_continuation_state_array[2]; key[8].length = 1; - key[8].key = (guint32 *) &k_continuation_state[12]; + key[8].key = &k_continuation_state_array[3]; key[9].length = 1; - key[9].key = (guint32 *) &k_continuation_state[16]; - key[10].length = 1; - key[10].key = &k_frame_number; - key[11].length = 0; - key[11].key = NULL; + key[9].key = &k_continuation_state_array[4]; + key[10].length = 0; + key[10].key = NULL; - continuation_state_data = (continuation_state_data_t *) wmem_tree_lookup32_array_le(continuation_states, key); - if (continuation_state_data && continuation_state_data->interface_id == interface_id && - continuation_state_data->adapter_id == adapter_id && - continuation_state_data->chandle == chandle && - continuation_state_data->psm == psm && - continuation_state_data->pdu_type == tid_request->pdu_type && - continuation_state_data->continuation_state[0] == continuation_state_array[0] && - continuation_state_data->continuation_state[1] == continuation_state_array[1] && - continuation_state_data->continuation_state[2] == continuation_state_array[2] && - continuation_state_data->continuation_state[3] == continuation_state_array[3] && - continuation_state_data->continuation_state[4] == continuation_state_array[4]) { + subtree = (wmem_tree_t *) wmem_tree_lookup32_array(continuation_states, key); + continuation_state_data = (subtree) ? (continuation_state_data_t *) wmem_tree_lookup32_le(subtree, frame_number) : NULL; + if (continuation_state_data) { tid_request->data = (guint8 *) wmem_alloc(wmem_file_scope(), continuation_state_data->data_length + attribute_list_byte_count); tid_request->data_length = continuation_state_data->data_length + attribute_list_byte_count; memcpy(tid_request->data, continuation_state_data->data, continuation_state_data->data_length); @@ -1563,14 +1544,10 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, if (record_handle) *record_handle = tid_request->record_handle; /* save tid_request in continuation_state data */ - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = continuation_state_length; - memcpy(&k_continuation_state[1], continuation_state, continuation_state_length); - continuation_state_array = (guint32 *) k_continuation_state; - - k_continuation_state = (guint8 *) wmem_alloc0(wmem_packet_scope(), 20); - k_continuation_state[0] = continuation_state_length; - memcpy(&k_continuation_state[1], continuation_state, continuation_state_length); + k_continuation_state_array = (guint32 *) wmem_alloc0(wmem_packet_scope(), 20); + continuation_state = (guint8 *) k_continuation_state_array; + continuation_state[0] = continuation_state_length; + memcpy(&continuation_state[1], continuation_state_buffer, continuation_state_length); k_interface_id = interface_id; k_adapter_id = adapter_id; @@ -1590,15 +1567,15 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, key[4].length = 1; key[4].key = &k_pdu_type; key[5].length = 1; - key[5].key = (guint32 *) &k_continuation_state[0]; + key[5].key = &k_continuation_state_array[0]; key[6].length = 1; - key[6].key = (guint32 *) &k_continuation_state[4]; + key[6].key = &k_continuation_state_array[1]; key[7].length = 1; - key[7].key = (guint32 *) &k_continuation_state[8]; + key[7].key = &k_continuation_state_array[2]; key[8].length = 1; - key[8].key = (guint32 *) &k_continuation_state[12]; + key[8].key = &k_continuation_state_array[3]; key[9].length = 1; - key[9].key = (guint32 *) &k_continuation_state[16]; + key[9].key = &k_continuation_state_array[4]; key[10].length = 1; key[10].key = &k_frame_number; key[11].length = 0; @@ -1610,11 +1587,11 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo, continuation_state_data->chandle = chandle; continuation_state_data->psm = psm; continuation_state_data->pdu_type = pdu_type; - continuation_state_data->continuation_state[0] = continuation_state_array[0]; - continuation_state_data->continuation_state[1] = continuation_state_array[1]; - continuation_state_data->continuation_state[2] = continuation_state_array[2]; - continuation_state_data->continuation_state[3] = continuation_state_array[3]; - continuation_state_data->continuation_state[4] = continuation_state_array[4]; + continuation_state_data->continuation_state[0] = k_continuation_state_array[0]; + continuation_state_data->continuation_state[1] = k_continuation_state_array[1]; + continuation_state_data->continuation_state[2] = k_continuation_state_array[2]; + continuation_state_data->continuation_state[3] = k_continuation_state_array[3]; + continuation_state_data->continuation_state[4] = k_continuation_state_array[4]; continuation_state_data->data = tid_request->data; continuation_state_data->data_length = tid_request->data_length; diff --git a/epan/dissectors/packet-logcat-text.c b/epan/dissectors/packet-logcat-text.c index 5699e4d75b..1f043c2376 100644 --- a/epan/dissectors/packet-logcat-text.c +++ b/epan/dissectors/packet-logcat-text.c @@ -79,7 +79,7 @@ typedef int (*tGETTER) (const gchar *frame, const gchar *token, tvbuff_t *tvb, proto_tree *maintree, gint start_offset, packet_info *pinfo); typedef struct { - GRegex *regex; + GRegex **regex; const tGETTER *getters; guint no_of_getters; } dissect_info_t; @@ -206,7 +206,7 @@ static int dissect_logcat_text(tvbuff_t *tvb, proto_tree *tree, packet_info *pin if (!g_regex_match(special_regex, frame, G_REGEX_MATCH_NOTEMPTY, NULL)) { - tokens = g_regex_split(dinfo->regex, frame, G_REGEX_MATCH_NOTEMPTY); + tokens = g_regex_split(*dinfo->regex, frame, G_REGEX_MATCH_NOTEMPTY); if (NULL == tokens) return 0; if (g_strv_length(tokens) != dinfo->no_of_getters + 2) { proto_tree_add_expert(maintree, pinfo, &ei_malformed_token, tvb, offset, -1); @@ -229,7 +229,7 @@ static int dissect_logcat_text(tvbuff_t *tvb, proto_tree *tree, packet_info *pin static int dissect_logcat_text_brief(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_priority, get_tag, get_pid, get_log }; - dissect_info_t dinfo = { brief_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &brief_regex, getters, array_length(getters) }; return dissect_logcat_text(tvb, tree, pinfo, &dinfo); } @@ -237,7 +237,7 @@ static int dissect_logcat_text_brief(tvbuff_t *tvb, packet_info *pinfo, proto_tr static int dissect_logcat_text_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_priority, get_tag, get_log }; - dissect_info_t dinfo = { tag_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &tag_regex, getters, array_length(getters) }; return dissect_logcat_text(tvb, tree, pinfo, &dinfo); } @@ -245,7 +245,7 @@ static int dissect_logcat_text_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree static int dissect_logcat_text_process(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_priority, get_pid, get_log }; - dissect_info_t dinfo = { process_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &process_regex, getters, array_length(getters) }; SET_ADDRESS(&pinfo->dst, AT_STRINGZ, 0, ""); SET_ADDRESS(&pinfo->src, AT_STRINGZ, 0, ""); @@ -256,7 +256,7 @@ static int dissect_logcat_text_process(tvbuff_t *tvb, packet_info *pinfo, proto_ static int dissect_logcat_text_time(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_time, get_priority, get_tag, get_pid, get_log }; - dissect_info_t dinfo = { time_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &time_regex, getters, array_length(getters) }; return dissect_logcat_text(tvb, tree, pinfo, &dinfo); } @@ -264,7 +264,7 @@ static int dissect_logcat_text_time(tvbuff_t *tvb, packet_info *pinfo, proto_tre static int dissect_logcat_text_thread(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_priority, get_pid, get_tid, get_log }; - dissect_info_t dinfo = { thread_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &thread_regex, getters, array_length(getters) }; SET_ADDRESS(&pinfo->dst, AT_STRINGZ, 0, ""); SET_ADDRESS(&pinfo->src, AT_STRINGZ, 0, ""); @@ -275,7 +275,7 @@ static int dissect_logcat_text_thread(tvbuff_t *tvb, packet_info *pinfo, proto_t static int dissect_logcat_text_threadtime(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_time, get_pid, get_tid, get_priority, get_tag, get_log }; - dissect_info_t dinfo = { threadtime_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &threadtime_regex, getters, array_length(getters) }; return dissect_logcat_text(tvb, tree, pinfo, &dinfo); } @@ -283,7 +283,7 @@ static int dissect_logcat_text_threadtime(tvbuff_t *tvb, packet_info *pinfo, pro static int dissect_logcat_text_long(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { static const tGETTER getters[] = { get_time, get_pid, get_tid, get_priority, get_tag, get_log }; - dissect_info_t dinfo = { long_regex, getters, array_length(getters) }; + dissect_info_t dinfo = { &long_regex, getters, array_length(getters) }; return dissect_logcat_text(tvb, tree, pinfo, &dinfo); } diff --git a/epan/dissectors/packet-usb-audio.c b/epan/dissectors/packet-usb-audio.c index 9bee878197..0b654b36d6 100644 --- a/epan/dissectors/packet-usb-audio.c +++ b/epan/dissectors/packet-usb-audio.c @@ -490,7 +490,7 @@ dissect_usb_audio_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tre { usb_conv_info_t *usb_conv_info; proto_tree *tree = NULL; - guint offset; + gint offset; guint length = tvb_length(tvb); @@ -515,7 +515,7 @@ dissect_usb_audio_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tre offset = 0; col_set_str(pinfo->cinfo, COL_INFO, "USB-MIDI Event Packets"); - while (offset < length) + while (offset > 0 && (guint) offset < length) { dissect_usb_midi_event(tvb, pinfo, tree, parent_tree, offset); offset += 4; diff --git a/epan/dissectors/packet-usb-com.c b/epan/dissectors/packet-usb-com.c index 21b3d535b7..dca25c5605 100644 --- a/epan/dissectors/packet-usb-com.c +++ b/epan/dissectors/packet-usb-com.c @@ -556,7 +556,6 @@ dissect_usb_com_bulk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * case 0x01: /* Network Transfer Block */ case 0x02: /* Network Transfer Block (IP + DSS) */ return call_dissector_only(mbim_bulk_handle, tvb, pinfo, tree, NULL); - break; default: break; } diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c index 4bdcfb58ce..98940522c5 100644 --- a/epan/dissectors/packet-usb.c +++ b/epan/dissectors/packet-usb.c @@ -1104,7 +1104,7 @@ get_usb_conv_info(conversation_t *conversation) /* usb_conv_info_t contains some components that are valid only for one specific packet clear_usb_conv_tmp_data() clears these components, it should be called before we dissect a new packet */ -void clear_usb_conv_tmp_data(usb_conv_info_t *usb_conv_info) +static void clear_usb_conv_tmp_data(usb_conv_info_t *usb_conv_info) { /* caller must have checked that usb_conv_info!= NULL */ @@ -1597,7 +1597,7 @@ dissect_usb_string_descriptor(packet_info *pinfo _U_, proto_tree *parent_tree, if (!usb_trans_info->u.get_descriptor.index) { /* list of languanges */ - while(len>(offset-old_offset)) { + while (offset >= old_offset && len > (offset - old_offset)) { /* wLANGID */ proto_tree_add_item(tree, hf_usb_wLANGID, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset+=2; diff --git a/wiretap/file_access.c b/wiretap/file_access.c index 0ce14727c9..6e216d8010 100644 --- a/wiretap/file_access.c +++ b/wiretap/file_access.c @@ -1510,10 +1510,8 @@ init_file_types_subtypes(void) /* if subtype is WTAP_FILE_TYPE_SUBTYPE_UNKNOWN, then create a new subtype as well as register it, else replace the existing entry in that spot */ -int -wtap_register_file_type_subtypes(const struct file_type_subtype_info* fi, const int subtype) -{ - struct file_type_subtype_info* finfo = NULL; +int wtap_register_file_type_subtypes(const struct file_type_subtype_info* fi, const int subtype) { + struct file_type_subtype_info* finfo; init_file_types_subtypes(); if (!fi || !fi->name || !fi->short_name || subtype > wtap_num_file_types_subtypes) { @@ -1560,10 +1558,8 @@ wtap_register_file_type_subtypes(const struct file_type_subtype_info* fi, const /* De-registers a file writer - they can never be removed from the GArray, but we can "clear" an entry. */ -void -wtap_deregister_file_type_subtype(const int subtype) -{ - struct file_type_subtype_info* finfo = NULL; +void wtap_deregister_file_type_subtype(const int subtype) { + struct file_type_subtype_info* finfo; if (subtype < 0 || subtype >= wtap_num_file_types_subtypes) { g_error("invalid file type to de-register"); diff --git a/wiretap/file_wrappers.c b/wiretap/file_wrappers.c index 65c35d1e6c..667727346e 100644 --- a/wiretap/file_wrappers.c +++ b/wiretap/file_wrappers.c @@ -1641,7 +1641,11 @@ gzwfile_write(GZWFILE_T state, const void *buf, guint len) /* directly compress user buffer to file */ strm->avail_in = len; +#if ZLIB_CONST + strm->next_in = (z_const Bytef *)buf; +#else strm->next_in = (Bytef *)buf; +#endif state->pos += len; if (gz_comp(state, Z_NO_FLUSH) == -1) return 0; diff --git a/wiretap/logcat.c b/wiretap/logcat.c index ff80f99a39..d71f583b9d 100644 --- a/wiretap/logcat.c +++ b/wiretap/logcat.c @@ -50,7 +50,9 @@ static gint detect_version(wtap *wth, int *err, gchar **err_info) struct logger_entry_v2 *log_entry_v2; guint8 *buffer; guint16 tmp; - guint8 *msg_payload, *msg_part, *msg_end; + guint8 *msg_payload; + guint8 *msg_part; + guint8 *msg_end; guint16 msg_len; /* 16-bit payload length */ @@ -90,11 +92,11 @@ static gint detect_version(wtap *wth, int *err, gchar **err_info) * version is in use. First assume the smallest msg. */ for (version = 1; version <= 2; ++version) { if (version == 1) { - msg_payload = log_entry->msg; + msg_payload = (guint8 *) (log_entry + 1); entry_len = sizeof(*log_entry) + payload_length; } else if (version == 2) { /* v2 is 4 bytes longer */ - msg_payload = log_entry_v2->msg; + msg_payload = (guint8 *) (log_entry_v2 + 1); entry_len = sizeof(*log_entry_v2) + payload_length; if (hdr_size != sizeof(*log_entry_v2)) continue; @@ -137,18 +139,18 @@ static gint detect_version(wtap *wth, int *err, gchar **err_info) } gint logcat_exported_pdu_length(const guint8 *pd) { - guint16 *tag; - guint16 *tag_length; - gint length = 0; + const guint16 *tag; + const guint16 *tag_length; + gint length = 0; - tag = (guint16 *) pd; + tag = (const guint16 *) pd; while(GINT16_FROM_BE(*tag)) { - tag_length = (guint16 *) (pd + 2); + tag_length = (const guint16 *) (pd + 2); length += 2 + 2 + GINT16_FROM_BE(*tag_length); pd += 2 + 2 + GINT16_FROM_BE(*tag_length); - tag = (guint16 *) pd; + tag = (const guint16 *) pd; } length += 2 + 2; diff --git a/wiretap/logcat.h b/wiretap/logcat.h index 9b2ea5cc25..71a0e7da5b 100644 --- a/wiretap/logcat.h +++ b/wiretap/logcat.h @@ -39,7 +39,7 @@ struct logger_entry { gint32 tid; /* generating process's tid */ gint32 sec; /* seconds since Epoch */ gint32 nsec; /* nanoseconds */ - char msg[0]; /* the entry's payload */ +/* char msg[0]; *//* the entry's payload */ }; struct logger_entry_v2 { @@ -53,8 +53,8 @@ struct logger_entry_v2 { /* v1: not present */ guint32 euid; /* v2: effective UID of logger */ guint32 lid; /* v3: log id of the payload */ - }; - char msg[0]; /* the entry's payload */ + } id; +/* char msg[0]; *//* the entry's payload */ }; int logcat_open(wtap *wth, int *err, gchar **err_info); diff --git a/wiretap/logcat_text.c b/wiretap/logcat_text.c index 75e651dca1..006e82c025 100644 --- a/wiretap/logcat_text.c +++ b/wiretap/logcat_text.c @@ -56,16 +56,16 @@ static gchar get_priority(const guint8 priority) { static gint buffered_detect_version(const guint8 *pd) { - struct logger_entry *log_entry; - struct logger_entry_v2 *log_entry_v2; + const struct logger_entry *log_entry; + const struct logger_entry_v2 *log_entry_v2; gint version; - guint8 *msg_payload = NULL; + const guint8 *msg_payload = NULL; guint8 *msg_part; guint8 *msg_end; guint16 msg_len; - log_entry_v2 = (struct logger_entry_v2 *) pd; - log_entry = (struct logger_entry *) pd; + log_entry_v2 = (const struct logger_entry_v2 *) pd; + log_entry = (const struct logger_entry *) pd; /* must contain at least priority and two nulls as separator */ if (log_entry->len < 3) @@ -79,10 +79,10 @@ static gint buffered_detect_version(const guint8 *pd) * version is in use. First assume the smallest msg. */ for (version = 1; version <= 2; ++version) { if (version == 1) { - msg_payload = log_entry->msg; + msg_payload = (const guint8 *) (log_entry + 1); } else if (version == 2) { /* v2 is 4 bytes longer */ - msg_payload = log_entry_v2->msg; + msg_payload = (const guint8 *) (log_entry_v2 + 1); if (log_entry_v2->hdr_size != sizeof(*log_entry_v2)) continue; } @@ -427,6 +427,7 @@ static gboolean logcat_text_dump_text(wtap_dumper *wdh, gint32 tid; gint32 seconds; gint32 milliseconds; + const guint8 *msg_payload = NULL; const gchar *msg_begin; gint msg_pre_skip; gchar *log; @@ -458,8 +459,8 @@ static gboolean logcat_text_dump_text(wtap_dumper *wdh, logcat_version = pseudo_header->logcat.version; } - log_entry = (struct logger_entry *) pd; - log_entry_v2 = (struct logger_entry_v2 *) pd; + log_entry = (const struct logger_entry *) pd; + log_entry_v2 = (const struct logger_entry_v2 *) pd; payload_length = GINT32_FROM_LE(log_entry->len); pid = GINT32_FROM_LE(log_entry->pid); @@ -469,15 +470,19 @@ static gboolean logcat_text_dump_text(wtap_dumper *wdh, /* msg: \0\0 with N >= 0, last \0 can be missing */ if (logcat_version == 1) { - priority = get_priority(log_entry->msg[0]); - tag = log_entry->msg + 1; + msg_payload = (const guint8 *) (log_entry + 1); + + priority = get_priority(msg_payload[0]); + tag = msg_payload + 1; msg_pre_skip = 1 + (gint) strlen(tag) + 1; - msg_begin = log_entry->msg + msg_pre_skip; + msg_begin = msg_payload + msg_pre_skip; } else if (logcat_version == 2) { - priority = get_priority(log_entry_v2->msg[0]); - tag = log_entry_v2->msg + 1; + msg_payload = (const guint8 *) (log_entry_v2 + 1); + + priority = get_priority(msg_payload[0]); + tag = msg_payload + 1; msg_pre_skip = 1 + (gint) strlen(tag) + 1; - msg_begin = log_entry_v2->msg + msg_pre_skip; + msg_begin = msg_payload + msg_pre_skip; } else { *err = WTAP_ERR_UNSUPPORTED; return FALSE; @@ -533,7 +538,7 @@ static gboolean logcat_text_dump_text(wtap_dumper *wdh, case WTAP_ENCAP_LOGCAT_THREADTIME: case WTAP_ENCAP_LOGCAT_LONG: if (dumper->type == wdh->encap) { - if (!wtap_dump_file_write(wdh, (gchar*) pd, phdr->caplen, err)) { + if (!wtap_dump_file_write(wdh, (const gchar*) pd, phdr->caplen, err)) { return FALSE; } } else { diff --git a/wiretap/merge.c b/wiretap/merge.c index bea6b53220..bf10f4ccdc 100644 --- a/wiretap/merge.c +++ b/wiretap/merge.c @@ -50,7 +50,8 @@ merge_open_in_files(int in_file_count, char *const *in_file_names, merge_in_file_t **in_files, int *err, gchar **err_info, int *err_fileno) { - int i, j; + gint i; + gint j; size_t files_size = in_file_count * sizeof(merge_in_file_t); merge_in_file_t *files; gint64 size; @@ -73,7 +74,7 @@ merge_open_in_files(int in_file_count, char *const *in_file_names, } size = wtap_file_size(files[i].wth, err); if (size == -1) { - for (j = 0; j <= i; j++) + for (j = 0; j + 1 > j && j <= i; j++) wtap_close(files[j].wth); *err_fileno = i; return FALSE;