diff options
author | stig <stig@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-03-01 17:23:39 +0000 |
---|---|---|
committer | stig <stig@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-03-01 17:23:39 +0000 |
commit | 994d316315868546fa15319311187414c3b4d4f9 (patch) | |
tree | 75b52bc6b03f8df488b8acbe97063df9d6d8b02d | |
parent | bb42d82ed760cb028118fca73c79f37e1cbc00b6 (diff) |
Rewrote to use g_strlcpy and g_strlcat.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@24525 f5534014-38df-0310-8fa8-9805f1628bb7
44 files changed, 289 insertions, 295 deletions
diff --git a/asn1/ansi-tcap/packet-ansi_tcap-template.c b/asn1/ansi-tcap/packet-ansi_tcap-template.c index c34938024b..7d324b8fd2 100644 --- a/asn1/ansi-tcap/packet-ansi_tcap-template.c +++ b/asn1/ansi-tcap/packet-ansi_tcap-template.c @@ -35,6 +35,7 @@ #include <epan/oids.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -377,7 +378,7 @@ dissect_ansi_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) if ( p_tcap_context && cur_oid && !p_tcap_context->oid_present ) { /* Save the application context and the sub dissector */ ber_oid_dissector_table = find_dissector_table("ber.oid"); - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; p_tcap_context->oid_present=TRUE; diff --git a/asn1/h245/packet-h245-template.c b/asn1/h245/packet-h245-template.c index 891fc55791..ccb2535f4a 100644 --- a/asn1/h245/packet-h245-template.c +++ b/asn1/h245/packet-h245-template.c @@ -39,6 +39,7 @@ #include <glib.h> #include <epan/packet.h> #include <epan/conversation.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -445,7 +446,7 @@ dissect_h245_FastStart_OLC(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr h245_pi->msg_type = H245_OpenLogChn; if (codec_str && codec_type){ - strncpy(codec_str, codec_type, 50); + g_strlcpy(codec_str, codec_type, 50); } } diff --git a/asn1/h450-ros/h450-ros.cnf b/asn1/h450-ros/h450-ros.cnf index 811f2ffe8d..52cb090cdd 100644 --- a/asn1/h450-ros/h450-ros.cnf +++ b/asn1/h450-ros/h450-ros.cnf @@ -48,16 +48,16 @@ InvokeProblem VAL_PTR = &problem_val ReturnResultProblem VAL_PTR = &problem_val ReturnErrorProblem VAL_PTR = &problem_val #.FN_FTR GeneralProblem - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64); problem_str[64-1] = '\0'; #.FN_FTR InvokeProblem - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64); problem_str[64-1] = '\0'; #.FN_FTR ReturnResultProblem - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64); problem_str[64-1] = '\0'; #.FN_FTR ReturnErrorProblem - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64); problem_str[64-1] = '\0'; #.END diff --git a/asn1/q932-ros/q932-ros.cnf b/asn1/q932-ros/q932-ros.cnf index 02395404e1..7e30c38570 100644 --- a/asn1/q932-ros/q932-ros.cnf +++ b/asn1/q932-ros/q932-ros.cnf @@ -51,17 +51,13 @@ InvokeProblem VAL_PTR = &problem_val ReturnResultProblem VAL_PTR = &problem_val ReturnErrorProblem VAL_PTR = &problem_val #.FN_FTR GeneralProblem - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_GeneralProblem_vals), ""), 64); - problem_str[64-1] = '\0'; + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_GeneralProblem_vals), ""), 64); #.FN_FTR InvokeProblem - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_InvokeProblem_vals), ""), 64); - problem_str[64-1] = '\0'; + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_InvokeProblem_vals), ""), 64); #.FN_FTR ReturnResultProblem - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnResultProblem_vals), ""), 64); - problem_str[64-1] = '\0'; + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnResultProblem_vals), ""), 64); #.FN_FTR ReturnErrorProblem - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnErrorProblem_vals), ""), 64); - problem_str[64-1] = '\0'; + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnErrorProblem_vals), ""), 64); #.END #--- INVOKE --- diff --git a/asn1/snmp/packet-snmp-template.c b/asn1/snmp/packet-snmp-template.c index 00228c10e0..828bad9c3d 100644 --- a/asn1/snmp/packet-snmp-template.c +++ b/asn1/snmp/packet-snmp-template.c @@ -489,7 +489,7 @@ extern int dissect_snmp_VarBind(gboolean implicit_tag _U_, pi = proto_tree_add_item(pt_varbind,hfid,tvb,value_offset,value_len,FALSE); expert_add_info_format(actx->pinfo, pi, PI_RESPONSE_CODE, PI_NOTE, "%s",note); - strncpy (label, note, ITEM_LABEL_LENGTH); + g_strlcpy (label, note, ITEM_LABEL_LENGTH); goto set_label; } diff --git a/asn1/t38/packet-t38-template.c b/asn1/t38/packet-t38-template.c index 3dea633819..5b2aafbb0b 100644 --- a/asn1/t38/packet-t38-template.c +++ b/asn1/t38/packet-t38-template.c @@ -65,6 +65,7 @@ #include "packet-per.h" #include "packet-tpkt.h" #include <epan/emem.h> +#include <epan/strutil.h> #define PORT_T38 6004 static guint global_t38_tcp_port = PORT_T38; @@ -271,8 +272,7 @@ void t38_add_address(packet_info *pinfo, /* * Update the conversation data. */ - strncpy(p_conv_data->setup_method, setup_method, MAX_T38_SETUP_METHOD_SIZE); - p_conv_data->setup_method[MAX_T38_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->setup_method, setup_method, MAX_T38_SETUP_METHOD_SIZE); p_conv_data->setup_frame_number = setup_frame_number; p_conv_data->src_t38_info.reass_ID = 0; p_conv_data->src_t38_info.reass_start_seqnum = -1; @@ -478,8 +478,7 @@ init_t38_info_conv(packet_info *pinfo) /* copy the t38 conversation info to the packet t38 conversation */ p_t38_packet_conv = se_alloc(sizeof(t38_conv)); - strncpy(p_t38_packet_conv->setup_method, p_t38_conv->setup_method, MAX_T38_SETUP_METHOD_SIZE); - p_t38_packet_conv->setup_method[MAX_T38_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_t38_packet_conv->setup_method, p_t38_conv->setup_method, MAX_T38_SETUP_METHOD_SIZE); p_t38_packet_conv->setup_frame_number = p_t38_conv->setup_frame_number; memcpy(&(p_t38_packet_conv->src_t38_info), &(p_t38_conv->src_t38_info), sizeof(t38_conv_info)); diff --git a/asn1/tcap/packet-tcap-template.c b/asn1/tcap/packet-tcap-template.c index 4ff4f1e963..0d44a86d52 100644 --- a/asn1/tcap/packet-tcap-template.c +++ b/asn1/tcap/packet-tcap-template.c @@ -36,6 +36,7 @@ #include <epan/oids.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -238,7 +239,7 @@ dissect_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) if ( p_tcap_context && cur_oid && !p_tcap_context->oid_present ) { /* Save the application context and the sub dissector */ ber_oid_dissector_table = find_dissector_table("ber.oid"); - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); p_tcap_context->oid_present=TRUE; if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; @@ -565,7 +566,7 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs /* ACN, changed, Fallback to lower version * and update the subdissector (purely formal) */ - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; p_tcap_context->subdissector_present=TRUE; @@ -573,7 +574,7 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs } } else { /* We do not have the OID in the TCAP context, so store it */ - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); p_tcap_context->oid_present=TRUE; /* Try to find a subdissector according to OID */ if ( (subdissector_handle diff --git a/epan/dissectors/packet-afs.c b/epan/dissectors/packet-afs.c index 3a735db1a5..ea0eb3825f 100644 --- a/epan/dissectors/packet-afs.c +++ b/epan/dissectors/packet-afs.c @@ -43,6 +43,7 @@ #include <epan/conversation.h> #include <epan/addr_resolv.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "packet-rx.h" #include "packet-afs.h" @@ -649,13 +650,13 @@ static gint ett_afs_vldb_flags = -1; int acllen; \ char tmp[10]; \ tmp[0] = 0; \ - if ( acl & PRSFS_READ ) strncat(tmp, "r", 2); \ - if ( acl & PRSFS_LOOKUP ) strncat(tmp, "l", 2); \ - if ( acl & PRSFS_INSERT ) strncat(tmp, "i", 2); \ - if ( acl & PRSFS_DELETE ) strncat(tmp, "d", 2); \ - if ( acl & PRSFS_WRITE ) strncat(tmp, "w", 2); \ - if ( acl & PRSFS_LOCK ) strncat(tmp, "k", 2); \ - if ( acl & PRSFS_ADMINISTER ) strncat(tmp, "a", 2); \ + if ( acl & PRSFS_READ ) g_strlcat(tmp, "r", 10); \ + if ( acl & PRSFS_LOOKUP ) g_strlcat(tmp, "l", 10); \ + if ( acl & PRSFS_INSERT ) g_strlcat(tmp, "i", 10); \ + if ( acl & PRSFS_DELETE ) g_strlcat(tmp, "d", 10); \ + if ( acl & PRSFS_WRITE ) g_strlcat(tmp, "w", 10); \ + if ( acl & PRSFS_LOCK ) g_strlcat(tmp, "k", 10); \ + if ( acl & PRSFS_ADMINISTER ) g_strlcat(tmp, "a", 10); \ ti = proto_tree_add_text(tree, tvb, offset, bytes, \ "ACL: %s %s%s", \ who, tmp, positive ? "" : " (negative)"); \ diff --git a/epan/dissectors/packet-ansi_tcap.c b/epan/dissectors/packet-ansi_tcap.c index 853c46bad6..6e91f1e47a 100644 --- a/epan/dissectors/packet-ansi_tcap.c +++ b/epan/dissectors/packet-ansi_tcap.c @@ -43,6 +43,7 @@ #include <epan/oids.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -120,7 +121,7 @@ static int hf_ansi_tcap_paramSequence = -1; /* T_paramSequence */ static int hf_ansi_tcap_paramSet = -1; /* T_paramSet */ /*--- End of included file: packet-ansi_tcap-hf.c ---*/ -#line 60 "packet-ansi_tcap-template.c" +#line 61 "packet-ansi_tcap-template.c" /* Initialize the subtree pointers */ static gint ett_tcap = -1; @@ -163,7 +164,7 @@ static gint ett_ansi_tcap_T_paramSequence = -1; static gint ett_ansi_tcap_T_paramSet = -1; /*--- End of included file: packet-ansi_tcap-ett.c ---*/ -#line 76 "packet-ansi_tcap-template.c" +#line 77 "packet-ansi_tcap-template.c" #define MAX_SSN 254 @@ -1319,7 +1320,7 @@ dissect_ansi_tcap_PackageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int /*--- End of included file: packet-ansi_tcap-fn.c ---*/ -#line 320 "packet-ansi_tcap-template.c" +#line 321 "packet-ansi_tcap-template.c" @@ -1380,7 +1381,7 @@ dissect_ansi_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) if ( p_tcap_context && cur_oid && !p_tcap_context->oid_present ) { /* Save the application context and the sub dissector */ ber_oid_dissector_table = find_dissector_table("ber.oid"); - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; p_tcap_context->oid_present=TRUE; @@ -1652,7 +1653,7 @@ proto_register_ansi_tcap(void) "ansi_tcap.T_paramSet", HFILL }}, /*--- End of included file: packet-ansi_tcap-hfarr.c ---*/ -#line 444 "packet-ansi_tcap-template.c" +#line 445 "packet-ansi_tcap-template.c" }; /* Setup protocol subtree array */ @@ -1689,7 +1690,7 @@ proto_register_ansi_tcap(void) &ett_ansi_tcap_T_paramSet, /*--- End of included file: packet-ansi_tcap-ettarr.c ---*/ -#line 454 "packet-ansi_tcap-template.c" +#line 455 "packet-ansi_tcap-template.c" }; /*static enum_val_t tcap_options[] = { diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c index 246c390cc6..c090c5ad52 100644 --- a/epan/dissectors/packet-bthci_cmd.c +++ b/epan/dissectors/packet-bthci_cmd.c @@ -38,6 +38,7 @@ #include <string.h> #include <epan/packet.h> +#include <epan/strutil.h> #include <etypes.h> #include <packet-hci_h4.h> #include <addr_resolv.h> @@ -834,20 +835,19 @@ dissect_bthci_cmd_cod(int type, tvbuff_t *tvb, int offset, packet_info *pinfo _U buf[0] = '\0'; proto_item_append_text(item, " (%s - services:", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); - if (cod2 & 0x80) strncat(buf, " Information,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x40) strncat(buf, " Telephony,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x20) strncat(buf, " Audio,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x10) strncat(buf, " Object transfer,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x08) strncat(buf, " Capturing,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x04) strncat(buf, " Rendering,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x02) strncat(buf, " Networking,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x01) strncat(buf, " Positioning,", sizeof(buf) - strlen(buf)); - if (cod1 & 0x20) strncat(buf, " Limited discoverable mode,", sizeof(buf) - strlen(buf)); + if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf)); + if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf)); + if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf)); + if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf)); + if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf)); + if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf)); + if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf)); + if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf)); + if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf)); buf[strlen(buf)-1] = '\0'; /* skip last comma */ - strncat(buf, ")", sizeof(buf) - strlen(buf)); - buf[128-1] = '\0'; + g_strlcat(buf, ")", sizeof(buf)); proto_item_append_text(item, buf); } else diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c index ef9f70508f..b459061876 100644 --- a/epan/dissectors/packet-bthci_evt.c +++ b/epan/dissectors/packet-bthci_evt.c @@ -38,6 +38,7 @@ #include <string.h> #include <epan/packet.h> +#include <epan/strutil.h> #include <etypes.h> #include <packet-hci_h4.h> #include <addr_resolv.h> @@ -640,20 +641,19 @@ dissect_bthci_evt_cod(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t buf[0] = 0; proto_item_append_text(item, " (%s - services:", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); - if (cod2 & 0x80) strncat(buf, " Information,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x40) strncat(buf, " Telephony,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x20) strncat(buf, " Audio,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x10) strncat(buf, " Object transfer,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x08) strncat(buf, " Capturing,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x04) strncat(buf, " Rendering,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x02) strncat(buf, " Networking,", sizeof(buf) - strlen(buf)); - if (cod2 & 0x01) strncat(buf, " Positioning,", sizeof(buf) - strlen(buf)); - if (cod1 & 0x20) strncat(buf, " Limited discoverable mode,", sizeof(buf) - strlen(buf)); + if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf)); + if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf)); + if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf)); + if (cod2 & 0x10) g_strlcat(buf, " Object transfer,", sizeof(buf)); + if (cod2 & 0x08) g_strlcat(buf, " Capturing,", sizeof(buf)); + if (cod2 & 0x04) g_strlcat(buf, " Rendering,", sizeof(buf)); + if (cod2 & 0x02) g_strlcat(buf, " Networking,", sizeof(buf)); + if (cod2 & 0x01) g_strlcat(buf, " Positioning,", sizeof(buf)); + if (cod1 & 0x20) g_strlcat(buf, " Limited discoverable mode,", sizeof(buf)); buf[strlen(buf)-1] = 0; /* skip last comma */ - strncat(buf, ")", sizeof(buf) - strlen(buf)); - buf[128-1] = '\0'; + g_strlcat(buf, ")", sizeof(buf)); proto_item_append_text(item, buf); } else diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c index 18cfc2ec50..8e7c43b913 100644 --- a/epan/dissectors/packet-clnp.c +++ b/epan/dissectors/packet-clnp.c @@ -43,6 +43,7 @@ #include <epan/nlpid.h> #include <epan/ipproto.h> #include <epan/expert.h> +#include <epan/strutil.h> /* protocols and fields */ @@ -1905,11 +1906,11 @@ static void dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) "Unknown (0x%02x)"); flag_string[0] = '\0'; if (cnf_type & CNF_SEG_OK) - strncat(flag_string, "S ", 3); + g_strlcat(flag_string, "S ", 7); if (cnf_type & CNF_MORE_SEGS) - strncat(flag_string, "M ", 3); + g_strlcat(flag_string, "M ", 7); if (cnf_type & CNF_ERR_OK) - strncat(flag_string, "E ", 3); + g_strlcat(flag_string, "E ", 7); if (tree) { ti = proto_tree_add_uint_format(clnp_tree, hf_clnp_type, tvb, P_CLNP_TYPE, 1, cnf_type, diff --git a/epan/dissectors/packet-cpfi.c b/epan/dissectors/packet-cpfi.c index 562526ad2c..633ca6ac23 100644 --- a/epan/dissectors/packet-cpfi.c +++ b/epan/dissectors/packet-cpfi.c @@ -39,6 +39,7 @@ #include <epan/packet.h> #include <epan/prefs.h> +#include <epan/strutil.h> void proto_reg_handoff_cpfi(void); @@ -182,7 +183,7 @@ dissect_cpfi_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tda = (word1 & CPFI_DEST_MASK) >> CPFI_DEST_SHIFT; if ( tda >= FIRST_TIO_CARD_ADDRESS ) { - strncpy(src_str, " CPFI", sizeof(src_str)); + g_strlcpy(src_str, " CPFI", sizeof(src_str)); src = 0; /* Make it smallest */ } else @@ -204,7 +205,7 @@ dissect_cpfi_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tda = (word1 & CPFI_SOURCE_MASK) >> CPFI_SOURCE_SHIFT; if ( tda >= FIRST_TIO_CARD_ADDRESS ) { - strncpy(dst_str, " CPFI", sizeof(dst_str)); + g_strlcpy(dst_str, " CPFI", sizeof(dst_str)); dst = 0; /* Make it smallest */ } else diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index b8b18ff9ad..80daa05bb0 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-h245.c */ -/* ../../tools/asn2wrs.py -e -p h245 -c h245.cnf -s packet-h245-template MULTIMEDIA-SYSTEM-CONTROL.asn */ +/* ../../tools/asn2wrs.py -e -p h245 -c ./h245.cnf -s ./packet-h245-template -D . MULTIMEDIA-SYSTEM-CONTROL.asn */ /* Input file: packet-h245-template.c */ @@ -47,6 +47,7 @@ #include <glib.h> #include <epan/packet.h> #include <epan/conversation.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -216,7 +217,7 @@ typedef enum _IndicationMessage_enum { } IndicationMessage_enum; /*--- End of included file: packet-h245-val.h ---*/ -#line 89 "packet-h245-template.c" +#line 90 "packet-h245-template.c" static const value_string h245_RequestMessage_short_vals[] = { { RequestMessage_nonStandard , "NSM" }, @@ -1900,7 +1901,7 @@ static int hf_h245_encrypted = -1; /* OCTET_STRING */ static int hf_h245_encryptedAlphanumeric = -1; /* EncryptedAlphanumeric */ /*--- End of included file: packet-h245-hf.c ---*/ -#line 373 "packet-h245-template.c" +#line 374 "packet-h245-template.c" /* Initialize the subtree pointers */ static int ett_h245 = -1; @@ -2401,7 +2402,7 @@ static gint ett_h245_FlowControlIndication = -1; static gint ett_h245_MobileMultilinkReconfigurationIndication = -1; /*--- End of included file: packet-h245-ett.c ---*/ -#line 378 "packet-h245-template.c" +#line 379 "packet-h245-template.c" /* Forward declarations */ static int dissect_h245_MultimediaSystemControlMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -14355,7 +14356,7 @@ static void dissect_OpenLogicalChannel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo /*--- End of included file: packet-h245-fn.c ---*/ -#line 387 "packet-h245-template.c" +#line 388 "packet-h245-template.c" static void dissect_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) @@ -14417,7 +14418,7 @@ dissect_h245_FastStart_OLC(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr h245_pi->msg_type = H245_OpenLogChn; if (codec_str && codec_type){ - strncpy(codec_str, codec_type, 50); + g_strlcpy(codec_str, codec_type, 50); } } @@ -20018,7 +20019,7 @@ void proto_register_h245(void) { "h245.EncryptedAlphanumeric", HFILL }}, /*--- End of included file: packet-h245-hfarr.c ---*/ -#line 465 "packet-h245-template.c" +#line 466 "packet-h245-template.c" }; /* List of subtrees */ @@ -20521,7 +20522,7 @@ void proto_register_h245(void) { &ett_h245_MobileMultilinkReconfigurationIndication, /*--- End of included file: packet-h245-ettarr.c ---*/ -#line 472 "packet-h245-template.c" +#line 473 "packet-h245-template.c" }; module_t *h245_module; diff --git a/epan/dissectors/packet-h245.h b/epan/dissectors/packet-h245.h index 4376792099..386f1d0775 100644 --- a/epan/dissectors/packet-h245.h +++ b/epan/dissectors/packet-h245.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-h245.h */ -/* ../../tools/asn2wrs.py -e -p h245 -c h245.cnf -s packet-h245-template MULTIMEDIA-SYSTEM-CONTROL.asn */ +/* ../../tools/asn2wrs.py -e -p h245 -c ./h245.cnf -s ./packet-h245-template -D . MULTIMEDIA-SYSTEM-CONTROL.asn */ /* Input file: packet-h245-template.h */ diff --git a/epan/dissectors/packet-h264.c b/epan/dissectors/packet-h264.c index 3a19158a53..761a6d794f 100644 --- a/epan/dissectors/packet-h264.c +++ b/epan/dissectors/packet-h264.c @@ -40,6 +40,7 @@ #include <epan/packet.h> #include <epan/proto.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include "prefs.h" @@ -346,25 +347,25 @@ dissect_h264_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, gint str[0]='\0'; for(bit=0;bit<((int)(bit_offset&0x07));bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } leading_zero_bits = -1; for( b = 0; !b; leading_zero_bits++ ){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } if(bit&&(!(bit%8))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } b = tvb_get_bits8(tvb, bit_offset, 1); if(b != 0){ - strcat(str, "1"); + g_strlcat(str, "1", 256); } else { - strcat(str, "0"); + g_strlcat(str, "0", 256); } bit++; bit_offset++; @@ -375,13 +376,13 @@ dissect_h264_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, gint *start_bit_offset = bit_offset; for(;bit%8;bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } if(hf_field){ - strcat(str," = "); - strcat(str,hf_field->name); + g_strlcat(str," = ", 256); + g_strlcat(str,hf_field->name, 256); switch (descriptor){ case H264_SE_V: /* if the syntax element is coded as se(v), @@ -471,25 +472,25 @@ dissect_h264_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, gint /* read the bits for the int */ for(i=0;i<leading_zero_bits;i++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } if(bit&&(!(bit%8))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } bit++; tmp = value & mask; if(tmp != 0){ - strcat(str, "1"); + g_strlcat(str, "1", 256); } else { - strcat(str, "0"); + g_strlcat(str, "0", 256); } mask = mask>>1; } for(;bit%8;bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } switch (descriptor){ @@ -511,11 +512,11 @@ dissect_h264_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, gint } if(hf_field){ - strcat(str," = "); - strcat(str,hf_field->name); + g_strlcat(str," = ", 256); + g_strlcat(str,hf_field->name, 256); switch (descriptor){ case H264_SE_V: - strcat(str,"(se(v))"); + g_strlcat(str,"(se(v))", 256); /* if the syntax element is coded as se(v), * the value of the syntax element is derived by invoking the * mapping process for signed Exp-Golomb codes as specified in diff --git a/epan/dissectors/packet-h450-ros.c b/epan/dissectors/packet-h450-ros.c index d8575b594f..cee87331a7 100644 --- a/epan/dissectors/packet-h450-ros.c +++ b/epan/dissectors/packet-h450-ros.c @@ -410,7 +410,7 @@ dissect_h450_ros_GeneralProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val); #line 51 "h450-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64); problem_str[64-1] = '\0'; return offset; @@ -435,7 +435,7 @@ dissect_h450_ros_InvokeProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val); #line 54 "h450-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64); problem_str[64-1] = '\0'; return offset; @@ -455,7 +455,7 @@ dissect_h450_ros_ReturnResultProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val); #line 57 "h450-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64); problem_str[64-1] = '\0'; return offset; @@ -477,7 +477,7 @@ dissect_h450_ros_ReturnErrorProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val); #line 60 "h450-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64); + g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64); problem_str[64-1] = '\0'; return offset; diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c index 320eb5e28b..ce7dfb50a2 100644 --- a/epan/dissectors/packet-icmpv6.c +++ b/epan/dissectors/packet-icmpv6.c @@ -50,6 +50,7 @@ #include <epan/ipproto.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include "packet-ber.h" #include "packet-ipv6.h" @@ -885,7 +886,7 @@ bitrange(tvbuff_t *tvb, int offset, int l, int s) for (i = 0; i < l; i++) { if (bitrange0(tvb_get_ntohl(tvb, offset + i * 4), s + i * 4, q, eq - q) == NULL) { if (q != buf && q + 5 < buf + sizeof(buf)) - strncpy(q, ",...", 5); + g_strlcpy(q, ",...", 5); return buf; } } diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index 6964350423..83b11beeb5 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -4132,7 +4132,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of proto_item_append_text(ti, ": \"%s\"", format_text(ssid, tag_len)); if (tag_len < 32) { - strncpy(wlan_stats.ssid, ssid, MAX_SSID_LEN); + g_strlcpy(wlan_stats.ssid, ssid, MAX_SSID_LEN); wlan_stats.ssid[MAX_SSID_LEN-1] = '\0'; } } else { @@ -6713,13 +6713,13 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, } if (algorithm == PROTECTION_ALG_WEP) { - strncpy (wlan_stats.protection, "WEP", MAX_PROTECT_LEN); + g_strlcpy (wlan_stats.protection, "WEP", MAX_PROTECT_LEN); } else if (algorithm == PROTECTION_ALG_TKIP) { - strncpy (wlan_stats.protection, "TKIP", MAX_PROTECT_LEN); + g_strlcpy (wlan_stats.protection, "TKIP", MAX_PROTECT_LEN); } else if (algorithm == PROTECTION_ALG_CCMP) { - strncpy (wlan_stats.protection, "CCMP", MAX_PROTECT_LEN); + g_strlcpy (wlan_stats.protection, "CCMP", MAX_PROTECT_LEN); } else { - strncpy (wlan_stats.protection, "Unknown", MAX_PROTECT_LEN); + g_strlcpy (wlan_stats.protection, "Unknown", MAX_PROTECT_LEN); } #ifndef HAVE_AIRPDCAP @@ -11213,7 +11213,7 @@ void set_airpdcap_keys(void) /* XXX - This just lops the end if the key off if it's too long. * Should we handle this more gracefully? */ - strncpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN); + g_strlcpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN); key.UserPwd.SsidLen = 0; if(dk->ssid != NULL && dk->ssid->len <= AIRPDCAP_WPA_SSID_MAX_LEN) diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c index ec52e42ad3..df003f4a3e 100644 --- a/epan/dissectors/packet-ip.c +++ b/epan/dissectors/packet-ip.c @@ -61,6 +61,7 @@ #include <epan/emem.h> #include <epan/nstime.h> #include <epan/expert.h> +#include <epan/strutil.h> static int ip_tap = -1; @@ -572,13 +573,13 @@ dissect_ipopt_cipso(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset, while (cat_str_len < (strlen(cat_str) + 2 + USHRT_MAX_STRLEN)) cat_str_len += cat_str_len; cat_str_new = ep_alloc(cat_str_len); - strncpy(cat_str_new, cat_str, cat_str_len); + g_strlcpy(cat_str_new, cat_str, cat_str_len); cat_str_new[cat_str_len - 1] = '\0'; cat_str = cat_str_new; } if (cat_str[0] != '\0') - strncat(cat_str, ",", cat_str_len - 1); - strncat(cat_str, cat_str_tmp, cat_str_len - 1); + g_strlcat(cat_str, ",", cat_str_len); + g_strlcat(cat_str, cat_str_tmp, cat_str_len); } bit_spot++; bitmask >>= 1; @@ -627,8 +628,8 @@ dissect_ipopt_cipso(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset, offset += 2; cat_str_tmp[USHRT_MAX_STRLEN - 1] = '\0'; if (cat_str[0] != '\0') - strncat(cat_str, ",", USHRT_MAX_STRLEN * 15 - 1); - strncat(cat_str, cat_str_tmp, USHRT_MAX_STRLEN * 15 - 1); + g_strlcat(cat_str, ",", USHRT_MAX_STRLEN * 15); + g_strlcat(cat_str, cat_str_tmp, USHRT_MAX_STRLEN * 15); } proto_tree_add_text(field_tree, tvb, offset - taglen + 4, taglen - 4, @@ -676,8 +677,8 @@ dissect_ipopt_cipso(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset, else g_snprintf(cat_str_tmp, USHRT_MAX_STRLEN * 2, "%u", cat_high); if (cat_str[0] != '\0') - strncat(cat_str, ",", USHRT_MAX_STRLEN * 16 - 1); - strncat(cat_str, cat_str_tmp, USHRT_MAX_STRLEN * 16 - 1); + g_strlcat(cat_str, ",", USHRT_MAX_STRLEN * 16); + g_strlcat(cat_str, cat_str_tmp, USHRT_MAX_STRLEN * 16); } proto_tree_add_text(field_tree, tvb, offset - taglen + 4, taglen - 4, diff --git a/epan/dissectors/packet-mgcp.c b/epan/dissectors/packet-mgcp.c index 445c5524e0..1a6539cec8 100644 --- a/epan/dissectors/packet-mgcp.c +++ b/epan/dissectors/packet-mgcp.c @@ -45,6 +45,7 @@ #include <epan/prefs.h> #include <epan/conversation.h> #include <epan/tap.h> +#include <epan/strutil.h> #include "packet-mgcp.h" #ifdef NEED_G_ASCII_STRCASECMP_H @@ -1451,8 +1452,7 @@ static void dissect_mgcp_firstline(tvbuff_t *tvb, packet_info *pinfo, proto_tree if (tokenlen > 4) THROW(ReportedBoundsError); code = tvb_format_text(tvb,tvb_previous_offset,tokenlen); - strncpy(mi->code,code,4); - mi->code[4] = '\0'; + g_strlcpy(mi->code,code,5); if (is_mgcp_verb(tvb,tvb_previous_offset,tvb_current_len,&verb_description)) { mgcp_type = MGCP_REQUEST; @@ -1597,7 +1597,7 @@ static void dissect_mgcp_firstline(tvbuff_t *tvb, packet_info *pinfo, proto_tree mi->request_available = TRUE; mgcp_call->responded = TRUE; mi->req_num = mgcp_call->req_num; - strncpy(mi->code,mgcp_call->code,5); + g_strlcpy(mi->code,mgcp_call->code,5); item = proto_tree_add_uint_format(tree, hf_mgcp_req_frame, tvb, 0, 0, mgcp_call->req_num, "This is a response to a request in frame %u", @@ -1751,7 +1751,7 @@ static void dissect_mgcp_firstline(tvbuff_t *tvb, packet_info *pinfo, proto_tree mgcp_call->transid = mi->transid; mgcp_call->responded = FALSE; mgcp_call->req_time=pinfo->fd->abs_ts; - strncpy(mgcp_call->code,mi->code,5); + g_strlcpy(mgcp_call->code,mi->code,5); /* Store it */ g_hash_table_insert(mgcp_calls, new_mgcp_call_key, mgcp_call); diff --git a/epan/dissectors/packet-msrp.c b/epan/dissectors/packet-msrp.c index 30dca6d7c3..0cc7561733 100644 --- a/epan/dissectors/packet-msrp.c +++ b/epan/dissectors/packet-msrp.c @@ -37,7 +37,7 @@ #include <glib.h> #include <epan/conversation.h> - +#include <epan/strutil.h> #include <epan/packet.h> #include <epan/emem.h> #include "prefs.h" @@ -214,8 +214,7 @@ void msrp_add_address( packet_info *pinfo, * Update the conversation data. */ p_conv_data->setup_method_set = TRUE; - strncpy(p_conv_data->setup_method, setup_method, MAX_MSRP_SETUP_METHOD_SIZE); - p_conv_data->setup_method[MAX_MSRP_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->setup_method, setup_method, MAX_MSRP_SETUP_METHOD_SIZE); p_conv_data->setup_frame_number = setup_frame_number; } diff --git a/epan/dissectors/packet-nbns.c b/epan/dissectors/packet-nbns.c index 1895f431bd..db85150b6d 100644 --- a/epan/dissectors/packet-nbns.c +++ b/epan/dissectors/packet-nbns.c @@ -39,6 +39,7 @@ #include "packet-tcp.h" #include "packet-frame.h" #include <epan/prefs.h> +#include <epan/strutil.h> static int proto_nbns = -1; static int hf_nbns_flags = -1; @@ -465,10 +466,9 @@ nbns_add_nbns_flags(column_info *cinfo, proto_tree *nbns_tree, tvbuff_t *tvb, in opcode = (guint16) ((flags & F_OPCODE) >> OPCODE_SHIFT); g_snprintf(buf, MAX_BUF_SIZE, "%s", val_to_str(opcode, opcode_vals, "Unknown operation")); if (flags & F_RESPONSE && !is_wack) { - strncat(buf, " response", MAX_BUF_SIZE - strlen(buf)); - strncat(buf, ", ", MAX_BUF_SIZE - strlen(buf)); - strncat(buf, val_to_str(flags & F_RCODE, rcode_vals, - "Unknown error"), MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, " response", MAX_BUF_SIZE); + g_strlcat(buf, ", ", MAX_BUF_SIZE); + g_strlcat(buf, val_to_str(flags & F_RCODE, rcode_vals, "Unknown error"), MAX_BUF_SIZE); buf[MAX_BUF_SIZE-1] = '\0'; if ((flags & F_RCODE) && check_col(cinfo, COL_INFO)) col_append_fstr(cinfo, COL_INFO, ", %s", @@ -519,11 +519,11 @@ nbns_add_nb_flags(proto_tree *rr_tree, tvbuff_t *tvb, int offset, gushort flags) buf=ep_alloc(MAX_BUF_SIZE); g_snprintf(buf, MAX_BUF_SIZE, "%s", val_to_str(flags & NB_FLAGS_ONT, nb_flags_ont_vals, "Unknown")); - strncat(buf, ", ", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", ", MAX_BUF_SIZE); if (flags & NB_FLAGS_G) - strncat(buf, "group", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, "group", MAX_BUF_SIZE); else - strncat(buf, "unique", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, "unique", MAX_BUF_SIZE); buf[MAX_BUF_SIZE-1] = '\0'; tf = proto_tree_add_text(rr_tree, tvb, offset, 2, "Flags: 0x%x (%s)", flags, buf); @@ -555,19 +555,19 @@ nbns_add_name_flags(proto_tree *rr_tree, tvbuff_t *tvb, int offset, buf=ep_alloc(MAX_BUF_SIZE); g_snprintf(buf, MAX_BUF_SIZE, "%s", val_to_str(flags & NAME_FLAGS_ONT, name_flags_ont_vals, "Unknown")); - strncat(buf, ", ", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", ", MAX_BUF_SIZE); if (flags & NAME_FLAGS_G) - strncat(buf, "group", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, "group", MAX_BUF_SIZE); else - strncat(buf, "unique", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, "unique", MAX_BUF_SIZE); if (flags & NAME_FLAGS_DRG) - strncat(buf, ", being deregistered", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", being deregistered", MAX_BUF_SIZE); if (flags & NAME_FLAGS_CNF) - strncat(buf, ", in conflict", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", in conflict", MAX_BUF_SIZE); if (flags & NAME_FLAGS_ACT) - strncat(buf, ", active", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", active", MAX_BUF_SIZE); if (flags & NAME_FLAGS_PRM) - strncat(buf, ", permanent node name", MAX_BUF_SIZE - strlen(buf)); + g_strlcat(buf, ", permanent node name", MAX_BUF_SIZE); buf[MAX_BUF_SIZE-1] = '\0'; tf = proto_tree_add_text(rr_tree, tvb, offset, 2, "Name flags: 0x%x (%s)", flags, buf); @@ -666,10 +666,9 @@ dissect_nbns_answer(tvbuff_t *tvb, int offset, int nbns_data_offset, (data_offset - data_start) + data_len, "%s: type %s, class %s", name, type_name, class_name); - strncat(name, " (", MAX_NAME_LEN - strlen(name)); - strncat(name, netbios_name_type_descr(name_type), MAX_NAME_LEN - strlen(name)); - strncat(name, ")", MAX_NAME_LEN - strlen(name)); - name[MAX_NAME_LEN-1] = '\0'; + g_strlcat(name, " (", MAX_NAME_LEN); + g_strlcat(name, netbios_name_type_descr(name_type), MAX_NAME_LEN); + g_strlcat(name, ")", MAX_NAME_LEN); rr_tree = add_rr_to_tree(trr, ett_nbns_rr, tvb, offset, name, name_len, type_name, dns_class_name(class), ttl, data_len); while (data_len > 0) { diff --git a/epan/dissectors/packet-ncp-sss.c b/epan/dissectors/packet-ncp-sss.c index 0eb319b747..18aaa01809 100644 --- a/epan/dissectors/packet-ncp-sss.c +++ b/epan/dissectors/packet-ncp-sss.c @@ -1,4 +1,3 @@ - /* packet-ncp-sss.c * Routines for Novell SecretStore Services * Greg Morris <gmorris@novell.com> @@ -32,6 +31,7 @@ #include <string.h> #include <glib.h> #include <epan/packet.h> +#include <epan/strutil.h> #include "prefs.h" #include "packet-ncp-int.h" #include "packet-ncp-sss.h" @@ -228,104 +228,104 @@ process_flags(proto_tree *sss_tree, tvbuff_t *tvb, guint32 foffset) { if (flags & bvalue) { - strncat(flags_str, sep, 1024 - strlen(flags_str)); + g_strlcat(flags_str, sep, 1024); switch(bvalue) { case 0x00000001: - strncat(flags_str, "Enhanced Protection", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Enhanced Protection", 1024); break; case 0x00000002: - strncat(flags_str, "Create ID", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Create ID", 1024); break; case 0x00000004: - strncat(flags_str, "Remove Lock", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Remove Lock", 1024); break; case 0x00000008: - strncat(flags_str, "Repair", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Repair", 1024); break; case 0x00000010: - strncat(flags_str, "Unicode", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Unicode", 1024); break; case 0x00000020: - strncat(flags_str, "EP Master Password Used", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "EP Master Password Used", 1024); break; case 0x00000040: - strncat(flags_str, "EP Password Used", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "EP Password Used", 1024); break; case 0x00000080: - strncat(flags_str, "Set Tree Name", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Set Tree Name", 1024); break; case 0x00000100: - strncat(flags_str, "Get Context", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Get Context", 1024); break; case 0x00000200: - strncat(flags_str, "Destroy Context", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Destroy Context", 1024); break; case 0x00000400: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x00000800: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x00001000: - strncat(flags_str, "EP Lock", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "EP Lock", 1024); break; case 0x00002000: - strncat(flags_str, "Not Initialized", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Initialized", 1024); break; case 0x00004000: - strncat(flags_str, "Enhanced Protection", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Enhanced Protection", 1024); break; case 0x00008000: - strncat(flags_str, "Store Not Synced", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Store Not Synced", 1024); break; case 0x00010000: - strncat(flags_str, "Admin Last Modified", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Admin Last Modified", 1024); break; case 0x00020000: - strncat(flags_str, "EP Password Present", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "EP Password Present", 1024); break; case 0x00040000: - strncat(flags_str, "EP Master Password Present", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "EP Master Password Present", 1024); break; case 0x00080000: - strncat(flags_str, "MP Disabled", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "MP Disabled", 1024); break; case 0x00100000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x00200000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x00400000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x00800000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x01000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x02000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x04000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x08000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x10000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x20000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x40000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; case 0x80000000: - strncat(flags_str, "Not Defined", 1024 - strlen(flags_str)); + g_strlcat(flags_str, "Not Defined", 1024); break; default: break; @@ -334,7 +334,7 @@ process_flags(proto_tree *sss_tree, tvbuff_t *tvb, guint32 foffset) } bvalue = bvalue*2; } - flags_str[1024-1] = '\0'; + tinew = proto_tree_add_uint_format(sss_tree, hf_flags, tvb, foffset, 4, flags, "%s 0x%08x", "Flags:", flags); flags_tree = proto_item_add_subtree(tinew, ett_nds); diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c index 0a821953d3..16e990f949 100644 --- a/epan/dissectors/packet-nfs.c +++ b/epan/dissectors/packet-nfs.c @@ -39,6 +39,7 @@ #include <epan/prefs.h> #include <epan/packet.h> #include <epan/emem.h> +#include <epan/strutil.h> static int proto_nfs = -1; @@ -1317,10 +1318,11 @@ dissect_fhandle_data_NETAPP(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree *t flag_string=ep_alloc(512); flag_string[0]=0; - while (bit--) - if (flags & (1<<bit)) - strncat(flag_string, strings[bit], 512 - strlen(flag_string)); - flag_string[512-1] = '\0'; + while (bit--) { + if (flags & (1<<bit)) { + g_strlcat(flag_string, strings[bit], 512); + } + } item = proto_tree_add_text(tree, tvb, offset + 0, 8, "mount (inode %u)", mount); subtree = proto_item_add_subtree(item, ett_nfs_fh_mount); @@ -1439,10 +1441,9 @@ dissect_fhandle_data_NETAPP_V4(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree while (bit--) { if (flags & (1<<bit)) { - strncat(flag_string, strings[bit], 512 - strlen(flag_string)); + g_strlcat(flag_string, strings[bit], 512); } } - flag_string[512-1] = '\0'; item = proto_tree_add_text(tree, tvb, offset + 0, 8, "export (inode %u)", fileid); subtree = proto_item_add_subtree(item, ett_nfsv4_fh_export); diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c index 3ecfefc1d8..7302facbe3 100644 --- a/epan/dissectors/packet-per.c +++ b/epan/dissectors/packet-per.c @@ -45,6 +45,7 @@ proper helper routines #include <epan/prefs.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include "packet-per.h" @@ -335,27 +336,27 @@ dissect_per_length_determinant(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx _ g_snprintf(str, 256, " "); for(bit=0;bit<((int)(offset&0x07));bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } /* read the bits for the int */ num_bits = 8; for(i=0;i<num_bits;i++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } if(bit&&(!(bit%8))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } bit++; offset=dissect_per_boolean(tvb, offset, actx, tree, -1, &tmp); val<<=1; if(tmp){ val|=1; - strcat(str, "1"); + g_strlcat(str, "1", 256); } else { - strcat(str, "0"); + g_strlcat(str, "0", 256); } } if((val&0x80)==0){ @@ -1181,34 +1182,34 @@ DEBUG_ENTRY("dissect_per_constrained_integer"); g_snprintf(str, 256, "%s: ", hfi->name); for(bit=0;bit<((int)(offset&0x07));bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } /* read the bits for the int */ for(i=0;i<num_bits;i++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } if(bit&&(!(bit%8))){ length+=1; - strcat(str, " "); + g_strlcat(str, " ", 256); } bit++; offset=dissect_per_boolean(tvb, offset, actx, tree, -1, &tmp); val<<=1; if(tmp){ val|=1; - strcat(str, "1"); + g_strlcat(str, "1", 256); } else { - strcat(str, "0"); + g_strlcat(str, "0", 256); } } for(;bit%8;bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } val_start = (offset-num_bits)>>3; val_length = length; val+=min; @@ -1376,34 +1377,34 @@ DEBUG_ENTRY("dissect_per_constrained_integer_64b"); g_snprintf(str, 256, "%s: ", hfi->name); for(bit=0;bit<((int)(offset&0x07));bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } /* read the bits for the int */ for(i=0;i<num_bits;i++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } if(bit&&(!(bit%8))){ length+=1; - strcat(str, " "); + g_strlcat(str, " ", 256); } bit++; offset=dissect_per_boolean(tvb, offset, actx, tree, -1, &tmp); val<<=1; if(tmp){ val|=1; - strcat(str, "1"); + g_strlcat(str, "1", 256); } else { - strcat(str, "0"); + g_strlcat(str, "0", 256); } } for(;bit%8;bit++){ if(bit&&(!(bit%4))){ - strcat(str, " "); + g_strlcat(str, " ", 256); } - strcat(str,"."); + g_strlcat(str,".", 256); } val_start = (offset-num_bits)>>3; val_length = length; val+=min; diff --git a/epan/dissectors/packet-q932-ros.c b/epan/dissectors/packet-q932-ros.c index 9e1edcfe5b..3cdb9bed78 100644 --- a/epan/dissectors/packet-q932-ros.c +++ b/epan/dissectors/packet-q932-ros.c @@ -245,7 +245,7 @@ dissect_q932_ros_T_linkedId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_q932_ros_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 73 "q932-ros.cnf" +#line 69 "q932-ros.cnf" gint len; len = tvb_length_remaining(tvb, offset); @@ -320,7 +320,7 @@ dissect_q932_ros_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_q932_ros_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 91 "q932-ros.cnf" +#line 87 "q932-ros.cnf" gint len; len = tvb_length_remaining(tvb, offset); @@ -409,7 +409,7 @@ dissect_q932_ros_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_q932_ros_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 110 "q932-ros.cnf" +#line 106 "q932-ros.cnf" gint len; @@ -495,8 +495,7 @@ dissect_q932_ros_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in &problem_val); #line 54 "q932-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_GeneralProblem_vals), ""), 64); - problem_str[64-1] = '\0'; + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_GeneralProblem_vals), ""), 64); return offset; } @@ -520,9 +519,8 @@ dissect_q932_ros_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &problem_val); -#line 57 "q932-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_InvokeProblem_vals), ""), 64); - problem_str[64-1] = '\0'; +#line 56 "q932-ros.cnf" + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_InvokeProblem_vals), ""), 64); return offset; } @@ -541,9 +539,8 @@ dissect_q932_ros_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &problem_val); -#line 60 "q932-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnResultProblem_vals), ""), 64); - problem_str[64-1] = '\0'; +#line 58 "q932-ros.cnf" + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnResultProblem_vals), ""), 64); return offset; } @@ -564,9 +561,8 @@ dissect_q932_ros_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &problem_val); -#line 63 "q932-ros.cnf" - strncpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnErrorProblem_vals), ""), 64); - problem_str[64-1] = '\0'; +#line 60 "q932-ros.cnf" + g_strlcpy(problem_str, val_to_str(problem_val, VALS(q932_ros_ReturnErrorProblem_vals), ""), 64); return offset; } diff --git a/epan/dissectors/packet-quakeworld.c b/epan/dissectors/packet-quakeworld.c index 5bc90053ea..2720e3e5a9 100644 --- a/epan/dissectors/packet-quakeworld.c +++ b/epan/dissectors/packet-quakeworld.c @@ -35,6 +35,7 @@ #include <string.h> #include <epan/packet.h> #include <epan/prefs.h> +#include <epan/strutil.h> static int proto_quakeworld = -1; @@ -509,10 +510,9 @@ dissect_quakeworld_ConnectionlessPacket(tvbuff_t *tvb, packet_info *pinfo, } remaining[0] = 0; for (i=2; i<Cmd_Argc() ; i++) { - strncat (remaining, Cmd_Argv(i), MAX_TEXT_SIZE - strlen(remaining)); - strncat (remaining, " ", MAX_TEXT_SIZE - strlen(remaining)); + g_strlcat (remaining, Cmd_Argv(i), MAX_TEXT_SIZE+1); + g_strlcat (remaining, " ", MAX_TEXT_SIZE+1); } - remaining[MAX_TEXT_SIZE] = '\0'; if (text_tree) { proto_tree_add_string(argument_tree, hf_quakeworld_connectionless_rcon_command, diff --git a/epan/dissectors/packet-rdt.c b/epan/dissectors/packet-rdt.c index 863b611a5e..34bf9d5b71 100644 --- a/epan/dissectors/packet-rdt.c +++ b/epan/dissectors/packet-rdt.c @@ -44,6 +44,7 @@ #include <epan/conversation.h> #include <epan/prefs.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "packet-rdt.h" @@ -285,8 +286,7 @@ void rdt_add_address(packet_info *pinfo, } /* Update the conversation data. */ - strncpy(p_conv_data->method, setup_method, MAX_RDT_SETUP_METHOD_SIZE); - p_conv_data->method[MAX_RDT_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->method, setup_method, MAX_RDT_SETUP_METHOD_SIZE); p_conv_data->frame_number = pinfo->fd->num; p_conv_data->feature_level = rdt_feature_level; } diff --git a/epan/dissectors/packet-rmi.c b/epan/dissectors/packet-rmi.c index 5ca84f7245..62947dffc0 100644 --- a/epan/dissectors/packet-rmi.c +++ b/epan/dissectors/packet-rmi.c @@ -204,13 +204,12 @@ dissect_rmi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb, offset + 1, 2, len); memset(epid_hostname, 0, sizeof(epid_hostname)); if (len < sizeof(epid_hostname)) { - strncpy(epid_hostname,tvb_get_ptr(tvb, offset + 3, len), + g_strlcpy(epid_hostname,tvb_get_ptr(tvb, offset + 3, len), sizeof(epid_hostname)); } else { - strncpy(epid_hostname, + g_strlcpy(epid_hostname, "<string too long>", sizeof(epid_hostname)); } - epid_hostname[sizeof(epid_hostname)-1] = '\0'; proto_tree_add_string(rmi_tree, hf_rmi_epid_hostname, tvb, offset + 3, strlen(epid_hostname), epid_hostname); diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c index 7667d6efed..733e05ded1 100644 --- a/epan/dissectors/packet-rtcp.c +++ b/epan/dissectors/packet-rtcp.c @@ -66,6 +66,7 @@ #include <epan/prefs.h> #include <epan/emem.h> #include <epan/expert.h> +#include <epan/strutil.h> #ifdef NEED_G_ASCII_STRCASECMP_H #include "g_ascii_strcasecmp.h" @@ -554,8 +555,7 @@ void srtcp_add_address( packet_info *pinfo, * Update the conversation data. */ p_conv_data->setup_method_set = TRUE; - strncpy(p_conv_data->setup_method, setup_method, MAX_RTCP_SETUP_METHOD_SIZE); - p_conv_data->setup_method[MAX_RTCP_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->setup_method, setup_method, MAX_RTCP_SETUP_METHOD_SIZE); p_conv_data->setup_frame_number = setup_frame_number; p_conv_data->srtcp_info = srtcp_info; } @@ -721,7 +721,7 @@ dissect_rtcp_rtpfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item nack_num_frames_lost ++; if (rtcp_rtpfb_nack_blp) { for (i = 0; i < 16; i ++) { - sprintf(strbuf, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1); + g_snprintf(strbuf, 64, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1); proto_tree_add_text( bitfield_tree, tvb, offset, 2, decode_boolean_bitfield(rtcp_rtpfb_nack_blp, (1<<i), @@ -832,7 +832,7 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree /* Application Name (ASCII) */ for( counter = 0; counter < 4; counter++ ) ascii_name[ counter ] = tvb_get_guint8( tvb, offset + counter ); - /* strncpy( ascii_name, pd + offset, 4 ); */ + /* g_strlcpy( ascii_name, pd + offset, 4 ); */ ascii_name[4] = '\0'; proto_tree_add_string( tree, hf_rtcp_name_ascii, tvb, offset, 4, ascii_name ); diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c index 2cd491ce47..8c67792981 100644 --- a/epan/dissectors/packet-rtp.c +++ b/epan/dissectors/packet-rtp.c @@ -75,6 +75,7 @@ #include <epan/prefs.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "log.h" @@ -446,8 +447,7 @@ void srtp_add_address(packet_info *pinfo, /* Free the hash if already exists */ rtp_free_hash_dyn_payload(p_conv_data->rtp_dyn_payload); - strncpy(p_conv_data->method, setup_method, MAX_RTP_SETUP_METHOD_SIZE); - p_conv_data->method[MAX_RTP_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->method, setup_method, MAX_RTP_SETUP_METHOD_SIZE); p_conv_data->frame_number = setup_frame_number; p_conv_data->rtp_dyn_payload = rtp_dyn_payload; p_conv_data->srtp_info = srtp_info; diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c index 8d5013462a..5b2f00a2cc 100644 --- a/epan/dissectors/packet-sccp.c +++ b/epan/dissectors/packet-sccp.c @@ -51,6 +51,7 @@ #include <epan/reassemble.h> #include <epan/asn1.h> #include <epan/uat.h> +#include <epan/strutil.h> #include "packet-mtp3.h" #include "packet-tcap.h" #include "packet-sccp.h" @@ -1015,13 +1016,13 @@ dissect_sccp_gt_address_information(tvbuff_t *tvb, proto_tree *tree, even_signal = tvb_get_guint8(tvb, offset) & GT_EVEN_SIGNAL_MASK; even_signal >>= GT_EVEN_SIGNAL_SHIFT; - strncat(gt_digits, val_to_str(odd_signal, sccp_address_signal_values, - "Unknown"), GT_MAX_SIGNALS - strlen(gt_digits)); + g_strlcat(gt_digits, val_to_str(odd_signal, sccp_address_signal_values, + "Unknown"), GT_MAX_SIGNALS+1); /* If the last signal is NOT filler */ if (offset != (length - 1) || even_length == TRUE) - strncat(gt_digits, val_to_str(even_signal, sccp_address_signal_values, - "Unknown"), GT_MAX_SIGNALS - strlen(gt_digits)); + g_strlcat(gt_digits, val_to_str(even_signal, sccp_address_signal_values, + "Unknown"), GT_MAX_SIGNALS+1); offset += GT_SIGNAL_LENGTH; } diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 54290b31d9..7e67599506 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -57,6 +57,7 @@ #include <epan/packet.h> #include <epan/req_resp_hdrs.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "packet-isup.h" #include "packet-sip.h" @@ -2022,7 +2023,7 @@ separator_found2: return offset - orig_offset; } else { - strncpy(cseq_method, value+sub_value_offset, MIN(strlen_to_copy, MAX_CSEQ_METHOD_SIZE)); + g_strlcpy(cseq_method, value+sub_value_offset, MAX_CSEQ_METHOD_SIZE); /* Add CSeq method to the tree */ if (cseq_tree) @@ -2115,10 +2116,7 @@ separator_found2: case POS_CALL_ID : /* Store the Call-id */ - strncpy(call_id, value, - strlen(value)+1 < MAX_CALL_ID_SIZE ? - strlen(value)+1 : - MAX_CALL_ID_SIZE); + g_strlcpy(call_id, value, MAX_CALL_ID_SIZE); stat_info->tap_call_id = ep_strdup(call_id); /* Add 'Call-id' string item to tree */ @@ -2743,10 +2741,8 @@ guint sip_is_packet_resend(packet_info *pinfo, /* No packet entry found, consult global hash table */ /* Prepare the key */ - strncpy(key.call_id, call_id, - (strlen(call_id)+1 <= MAX_CALL_ID_SIZE) ? - strlen(call_id)+1 : - MAX_CALL_ID_SIZE); + g_strlcpy(key.call_id, call_id, MAX_CALL_ID_SIZE); + /* We're only using these addresses locally (for the hash lookup) so * there is no need to make a (g_malloc'd) copy of them. */ @@ -2787,8 +2783,7 @@ guint sip_is_packet_resend(packet_info *pinfo, p_key->source_port = pinfo->srcport; p_val->cseq = cseq_number; - strncpy(p_val->method, cseq_method, MAX_CSEQ_METHOD_SIZE-1); - p_val->method[MAX_CSEQ_METHOD_SIZE-1] = '\0'; + g_strlcpy(p_val->method, cseq_method, MAX_CSEQ_METHOD_SIZE); p_val->transaction_state = nothing_seen; p_val->frame_number = 0; diff --git a/epan/dissectors/packet-smb-common.c b/epan/dissectors/packet-smb-common.c index 6b288f039b..cb8194f546 100644 --- a/epan/dissectors/packet-smb-common.c +++ b/epan/dissectors/packet-smb-common.c @@ -35,6 +35,7 @@ #include <epan/packet.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "packet-smb-common.h" /* @@ -331,7 +332,7 @@ get_unicode_or_ascii_string(tvbuff_t *tvb, int *offsetp, tvb_memcpy(tvb, (guint8 *)cur, *offsetp, copylen); cur[copylen] = '\0'; if (overflow) - strncat(cur, "...",4); + g_strlcat(cur, "...",MAX_UNICODE_STR_LEN+3+1); string_len = *len; string = cur; } else { diff --git a/epan/dissectors/packet-smb-sidsnooping.c b/epan/dissectors/packet-smb-sidsnooping.c index 5d868a0827..928a5a258b 100644 --- a/epan/dissectors/packet-smb-sidsnooping.c +++ b/epan/dissectors/packet-smb-sidsnooping.c @@ -34,6 +34,7 @@ #include "epan/proto.h" #include <epan/tap.h> #include <epan/emem.h> +#include <epan/strutil.h> #include "packet-dcerpc.h" #include "packet-dcerpc-nt.h" #include "register.h" @@ -206,7 +207,7 @@ samr_query_dispinfo(void *dummy _U_, packet_info *pinfo, epan_dissect_t *edt, co fi_rid=gp_rids->pdata[num_rids-1]; fi_name=gp_names->pdata[num_rids-1]; - strncpy(sid_name, sid, len); + g_strlcpy(sid_name, sid, 256); sid_name[len++]='-'; g_snprintf(sid_name+len, 256-len, "%d",fi_rid->value.value.sinteger); add_sid_name_mapping(sid_name, fi_name->value.value.string); diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c index 93c44c805a..40cad22302 100644 --- a/epan/dissectors/packet-smb.c +++ b/epan/dissectors/packet-smb.c @@ -5113,8 +5113,7 @@ dissect_search_resume_key(tvbuff_t *tvb, packet_info *pinfo, TRUE, TRUE, bcp); CHECK_STRING_SUBR(fn); /* ensure that it's null-terminated */ - strncpy(fname, fn, 11); - fname[11] = '\0'; + g_strlcpy(fname, fn, 11+1); proto_tree_add_string(tree, hf_smb_file_name, tvb, offset, 11, fname); COUNT_BYTES_SUBR(fn_len); @@ -5194,8 +5193,7 @@ dissect_search_dir_info(tvbuff_t *tvb, packet_info *pinfo, TRUE, TRUE, bcp); CHECK_STRING_SUBR(fn); /* ensure that it's null-terminated */ - strncpy(fname, fn, 13); - fname[13] = '\0'; + g_strlcpy(fname, fn, 13+1); proto_tree_add_string(tree, hf_smb_file_name, tvb, offset, fn_len, fname); COUNT_BYTES_SUBR(fn_len); diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index f2f623befe..91e250ae8e 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -591,7 +591,7 @@ extern int dissect_snmp_VarBind(gboolean implicit_tag _U_, pi = proto_tree_add_item(pt_varbind,hfid,tvb,value_offset,value_len,FALSE); expert_add_info_format(actx->pinfo, pi, PI_RESPONSE_CODE, PI_NOTE, "%s",note); - strncpy (label, note, ITEM_LABEL_LENGTH); + g_strlcpy (label, note, ITEM_LABEL_LENGTH); goto set_label; } diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c index 2280c80099..833006cec7 100644 --- a/epan/dissectors/packet-ssl-utils.c +++ b/epan/dissectors/packet-ssl-utils.c @@ -2091,14 +2091,14 @@ ssl_load_pkcs12(FILE* fp, const gchar *cert_passwd) { buf_len = sizeof(buf_name); ret = gnutls_x509_crt_get_dn_by_oid(ssl_cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, buf_name, &buf_len); - if (ret < 0) { strncpy(buf_name, "<ERROR>", 256); } + if (ret < 0) { g_strlcpy(buf_name, "<ERROR>", 256); } buf_len = sizeof(buf_email); ret = gnutls_x509_crt_get_dn_by_oid(ssl_cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, buf_email, &buf_len); - if (ret < 0) { strncpy(buf_email, "<ERROR>", 256); } + if (ret < 0) { g_strlcpy(buf_email, "<ERROR>", 128); } buf_len = sizeof(buf_keyid); ret = gnutls_x509_crt_get_key_id(ssl_cert, 0, buf_keyid, &buf_len); - if (ret < 0) { strncpy(buf_keyid, "<ERROR>", 256); } + if (ret < 0) { g_strlcpy(buf_keyid, "<ERROR>", 32); } private_key->x509_cert = ssl_cert; ssl_debug_printf( "Certificate imported: %s <%s>, KeyID %s\n", buf_name, buf_email, bytes_to_str(buf_keyid, buf_len)); @@ -2355,7 +2355,7 @@ ssl_association_add(GTree* associations, dissector_handle_t handle, guint port, assoc->tcp = tcp; assoc->ssl_port = port; assoc->info=g_malloc(strlen(protocol)+1); - strncpy(assoc->info, protocol, strlen(protocol)+1); + g_strlcpy(assoc->info, protocol, strlen(protocol)+1); assoc->handle = find_dissector(protocol); assoc->from_key_list = from_key_list; diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c index 0129bf4a04..b864a2310c 100644 --- a/epan/dissectors/packet-t38.c +++ b/epan/dissectors/packet-t38.c @@ -73,6 +73,7 @@ #include "packet-per.h" #include "packet-tpkt.h" #include <epan/emem.h> +#include <epan/strutil.h> #define PORT_T38 6004 static guint global_t38_tcp_port = PORT_T38; @@ -158,7 +159,7 @@ static int hf_t38_fec_data = -1; /* T_fec_data */ static int hf_t38_fec_data_item = -1; /* OCTET_STRING */ /*--- End of included file: packet-t38-hf.c ---*/ -#line 131 "packet-t38-template.c" +#line 132 "packet-t38-template.c" /* T38 setup fields */ static int hf_t38_setup = -1; @@ -190,7 +191,7 @@ static gint ett_t38_T_fec_info = -1; static gint ett_t38_T_fec_data = -1; /*--- End of included file: packet-t38-ett.c ---*/ -#line 149 "packet-t38-template.c" +#line 150 "packet-t38-template.c" static gint ett_t38_setup = -1; static gint ett_data_fragment = -1; @@ -316,8 +317,7 @@ void t38_add_address(packet_info *pinfo, /* * Update the conversation data. */ - strncpy(p_conv_data->setup_method, setup_method, MAX_T38_SETUP_METHOD_SIZE); - p_conv_data->setup_method[MAX_T38_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_conv_data->setup_method, setup_method, MAX_T38_SETUP_METHOD_SIZE); p_conv_data->setup_frame_number = setup_frame_number; p_conv_data->src_t38_info.reass_ID = 0; p_conv_data->src_t38_info.reass_start_seqnum = -1; @@ -1059,8 +1059,7 @@ init_t38_info_conv(packet_info *pinfo) /* copy the t38 conversation info to the packet t38 conversation */ p_t38_packet_conv = se_alloc(sizeof(t38_conv)); - strncpy(p_t38_packet_conv->setup_method, p_t38_conv->setup_method, MAX_T38_SETUP_METHOD_SIZE); - p_t38_packet_conv->setup_method[MAX_T38_SETUP_METHOD_SIZE] = '\0'; + g_strlcpy(p_t38_packet_conv->setup_method, p_t38_conv->setup_method, MAX_T38_SETUP_METHOD_SIZE); p_t38_packet_conv->setup_frame_number = p_t38_conv->setup_frame_number; memcpy(&(p_t38_packet_conv->src_t38_info), &(p_t38_conv->src_t38_info), sizeof(t38_conv_info)); @@ -1349,7 +1348,7 @@ proto_register_t38(void) "t38.OCTET_STRING", HFILL }}, /*--- End of included file: packet-t38-hfarr.c ---*/ -#line 695 "packet-t38-template.c" +#line 694 "packet-t38-template.c" { &hf_t38_setup, { "Stream setup", "t38.setup", FT_STRING, BASE_NONE, NULL, 0x0, "Stream setup, method and frame number", HFILL }}, @@ -1404,7 +1403,7 @@ proto_register_t38(void) &ett_t38_T_fec_data, /*--- End of included file: packet-t38-ettarr.c ---*/ -#line 736 "packet-t38-template.c" +#line 735 "packet-t38-template.c" &ett_t38_setup, &ett_data_fragment, &ett_data_fragments diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c index 1fd894c913..d6297d21ca 100644 --- a/epan/dissectors/packet-tcap.c +++ b/epan/dissectors/packet-tcap.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-tcap.c */ -/* ../../tools/asn2wrs.py -b -p tcap -c tcap.cnf -s packet-tcap-template tcap.asn */ +/* ../../tools/asn2wrs.py -b -p tcap -c ./tcap.cnf -s ./packet-tcap-template -D . tcap.asn */ /* Input file: packet-tcap-template.c */ @@ -44,6 +44,7 @@ #include <epan/oids.h> #include <epan/emem.h> #include <epan/asn1.h> +#include <epan/strutil.h> #include <stdio.h> #include <string.h> @@ -198,7 +199,7 @@ static int hf_tcap_T_protocol_versionre_version1 = -1; static int hf_tcap_T_protocol_version3_version1 = -1; /*--- End of included file: packet-tcap-hf.c ---*/ -#line 64 "packet-tcap-template.c" +#line 65 "packet-tcap-template.c" /* Initialize the subtree pointers */ static gint ett_tcap = -1; @@ -269,7 +270,7 @@ static gint ett_tcap_OperationCode = -1; static gint ett_tcap_ErrorCode = -1; /*--- End of included file: packet-tcap-ett.c ---*/ -#line 80 "packet-tcap-template.c" +#line 81 "packet-tcap-template.c" #define MAX_SSN 254 static range_t *global_ssn_range; @@ -435,7 +436,7 @@ static const value_string tcap_Associate_result_vals[] = { static int dissect_tcap_Associate_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -452,7 +453,7 @@ static const value_string tcap_T_dialogue_service_user_vals[] = { static int dissect_tcap_T_dialogue_service_user(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -469,7 +470,7 @@ static const value_string tcap_T_dialogue_service_provider_vals[] = { static int dissect_tcap_T_dialogue_service_provider(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -535,7 +536,7 @@ static const value_string tcap_ABRT_source_vals[] = { static int dissect_tcap_ABRT_source(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -724,7 +725,7 @@ static const value_string tcap_Release_request_reason_vals[] = { static int dissect_tcap_Release_request_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -766,7 +767,7 @@ static const value_string tcap_Release_response_reason_vals[] = { static int dissect_tcap_Release_response_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -885,7 +886,7 @@ dissect_tcap_DialoguePortion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_tcap_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -895,7 +896,7 @@ dissect_tcap_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs static int dissect_tcap_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -987,7 +988,7 @@ dissect_tcap_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs static int dissect_tcap_INTEGER_M32768_32767(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1073,7 +1074,7 @@ static const value_string tcap_GeneralProblem_vals[] = { static int dissect_tcap_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1095,7 +1096,7 @@ static const value_string tcap_InvokeProblem_vals[] = { static int dissect_tcap_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1112,7 +1113,7 @@ static const value_string tcap_ReturnResultProblem_vals[] = { static int dissect_tcap_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1131,7 +1132,7 @@ static const value_string tcap_ReturnErrorProblem_vals[] = { static int dissect_tcap_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1455,7 +1456,7 @@ static const value_string tcap_P_AbortCause_U_vals[] = { static int dissect_tcap_P_AbortCause_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -1863,7 +1864,7 @@ static const value_string tcap_ProblemPDU_vals[] = { static int dissect_tcap_ProblemPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -2080,7 +2081,7 @@ static const value_string tcap_P_Abort_cause_U_vals[] = { static int dissect_tcap_P_Abort_cause_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); + NULL); return offset; } @@ -2218,7 +2219,7 @@ static void dissect_UniDialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ /*--- End of included file: packet-tcap-fn.c ---*/ -#line 148 "packet-tcap-template.c" +#line 149 "packet-tcap-template.c" @@ -2312,7 +2313,7 @@ dissect_tcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) if ( p_tcap_context && cur_oid && !p_tcap_context->oid_present ) { /* Save the application context and the sub dissector */ ber_oid_dissector_table = find_dissector_table("ber.oid"); - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); p_tcap_context->oid_present=TRUE; if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; @@ -2348,7 +2349,7 @@ proto_reg_handoff_tcap(void) /*--- End of included file: packet-tcap-dis-tab.c ---*/ -#line 270 "packet-tcap-template.c" +#line 271 "packet-tcap-template.c" } static void init_tcap(void); @@ -2911,7 +2912,7 @@ proto_register_tcap(void) "", HFILL }}, /*--- End of included file: packet-tcap-hfarr.c ---*/ -#line 332 "packet-tcap-template.c" +#line 333 "packet-tcap-template.c" }; /* Setup protocol subtree array */ @@ -2976,7 +2977,7 @@ proto_register_tcap(void) &ett_tcap_ErrorCode, /*--- End of included file: packet-tcap-ettarr.c ---*/ -#line 342 "packet-tcap-template.c" +#line 343 "packet-tcap-template.c" }; /*static enum_val_t tcap_options[] = { @@ -3203,7 +3204,7 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs /* ACN, changed, Fallback to lower version * and update the subdissector (purely formal) */ - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); if ( (subdissector_handle = dissector_get_string_handle(ber_oid_dissector_table, cur_oid)) ) { p_tcap_context->subdissector_handle=subdissector_handle; p_tcap_context->subdissector_present=TRUE; @@ -3211,7 +3212,7 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs } } else { /* We do not have the OID in the TCAP context, so store it */ - strncpy(p_tcap_context->oid,cur_oid, LENGTH_OID); + g_strlcpy(p_tcap_context->oid,cur_oid, LENGTH_OID); p_tcap_context->oid_present=TRUE; /* Try to find a subdissector according to OID */ if ( (subdissector_handle diff --git a/epan/dissectors/packet-tcap.h b/epan/dissectors/packet-tcap.h index 58a1913e97..b864576721 100644 --- a/epan/dissectors/packet-tcap.h +++ b/epan/dissectors/packet-tcap.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-tcap.h */ -/* ../../tools/asn2wrs.py -b -p tcap -c tcap.cnf -s packet-tcap-template tcap.asn */ +/* ../../tools/asn2wrs.py -b -p tcap -c ./tcap.cnf -s ./packet-tcap-template -D . tcap.asn */ /* Input file: packet-tcap-template.h */ diff --git a/epan/dissectors/packet-telnet.c b/epan/dissectors/packet-telnet.c index c52502a83a..495a362c37 100644 --- a/epan/dissectors/packet-telnet.c +++ b/epan/dissectors/packet-telnet.c @@ -500,14 +500,13 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv int bit = ls & 1; if (bit) { if (print_count != 0) { - strncat(ls_buffer,", ",512-strlen(ls_buffer)); + g_strlcat(ls_buffer,", ",512); } - strncat(ls_buffer,linestate_bits[idx], 512-strlen(ls_buffer)); + g_strlcat(ls_buffer,linestate_bits[idx], 512); print_count++; } ls = ls >> 1; } - ls_buffer[512-1] = '\0'; proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ls_buffer); } else { const char *print_pattern = (cmd == TNCOMPORT_SETLINESTATEMASK) ? @@ -531,14 +530,13 @@ dissect_comport_subopt(packet_info *pinfo _U_, const char *optname, tvbuff_t *tv int bit = ms & 1; if (bit) { if (print_count != 0) { - strncat(ms_buffer,", ",256-strlen(ms_buffer)); + g_strlcat(ms_buffer,", ",256); } - strncat(ms_buffer,modemstate_bits[idx],256-strlen(ms_buffer)); + g_strlcat(ms_buffer,modemstate_bits[idx],256); print_count++; } ms = ms >> 1; } - ms_buffer[256-1] = '\0'; proto_tree_add_text(tree, tvb, offset, 2, print_pattern, source, ms_buffer); } else { const char *print_pattern = (cmd == TNCOMPORT_SETMODEMSTATEMASK) ? diff --git a/epan/dissectors/packet-tpncp.c b/epan/dissectors/packet-tpncp.c index 4b9e39473b..33b18bbf45 100644 --- a/epan/dissectors/packet-tpncp.c +++ b/epan/dissectors/packet-tpncp.c @@ -43,6 +43,7 @@ #include <epan/emem.h> #include <epan/filesystem.h> #include <epan/dissectors/packet-tcp.h> +#include <epan/strutil.h> /*-------------------------------------------------------------------------------------------------------------------------------------------*/ @@ -518,8 +519,7 @@ static gint fill_enums_id_vals(FILE *file) { else first_entry = 0; tpncp_enums_name_vals[enum_val] = g_strdup(enum_name); - strncpy(enum_type, enum_name, MAX_TPNCP_DB_ENTRY_LEN); - enum_type[MAX_TPNCP_DB_ENTRY_LEN-1] = '\0'; + g_strlcpy(enum_type, enum_name, MAX_TPNCP_DB_ENTRY_LEN); } tpncp_enums_id_vals[enum_val][i].strptr = g_strdup(enum_str); tpncp_enums_id_vals[enum_val][i].value = enum_id; @@ -640,8 +640,7 @@ static gint init_tpncp_data_fields_info(tpncp_data_field_info *data_fields_info, } current_tpncp_data_field_info->tpncp_data_field_descr = -1; hf_entr.p_id = ¤t_tpncp_data_field_info->tpncp_data_field_descr; - strncpy(current_tpncp_data_field_info->tpncp_data_field_name, tpncp_data_field_name, MAX_TPNCP_DATA_FIELD_NAME_LEN); - current_tpncp_data_field_info->tpncp_data_field_name[MAX_TPNCP_DATA_FIELD_NAME_LEN-1] = '\0'; + g_strlcpy(current_tpncp_data_field_info->tpncp_data_field_name, tpncp_data_field_name, MAX_TPNCP_DATA_FIELD_NAME_LEN); hf_entr.hfinfo.name = current_tpncp_data_field_info->tpncp_data_field_name; hf_entr.hfinfo.abbrev = current_tpncp_data_field_info->tpncp_data_field_name; switch (tpncp_data_field_size) { |