Don't pass ep_alloc()'ed strings to col_set_str().
authorkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 6 Sep 2009 04:26:50 +0000 (04:26 +0000)
committerkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 6 Sep 2009 04:26:50 +0000 (04:26 +0000)
Fixes https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3984

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29726 f5534014-38df-0310-8fa8-9805f1628bb7

22 files changed:
asn1/camel/packet-camel-template.c
asn1/gsmmap/packet-gsmmap-template.c
asn1/pkixcmp/packet-cmp-template.c
asn1/smrse/packet-smrse-template.c
epan/dissectors/packet-camel.c
epan/dissectors/packet-catapult-dct2000.c
epan/dissectors/packet-cmp.c
epan/dissectors/packet-dlm3.c
epan/dissectors/packet-gsm_map.c
epan/dissectors/packet-hip.c
epan/dissectors/packet-ieee802154.c
epan/dissectors/packet-mtp2.c
epan/dissectors/packet-nat-pmp.c
epan/dissectors/packet-ptp.c
epan/dissectors/packet-rpl.c
epan/dissectors/packet-smrse.c
epan/dissectors/packet-wow.c
epan/dissectors/packet-zbee-aps.c
epan/dissectors/packet-zbee-nwk.c
epan/dissectors/packet-zbee-zdp.c
epan/value_string.c
epan/value_string.h

index a577122d25635fce6149267a9474da3bd0f3290a..089069d40ea42d6e8a684cb02a08fed33140833a 100644 (file)
@@ -352,7 +352,7 @@ dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn
 
   if (check_col(actx->pinfo->cinfo, COL_INFO)){
     /* Populate the info column with PDU type*/
-    col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str(camel_pdu_type, camel_Component_vals, "Unknown Camel (%u)"));
+    col_add_fstr(actx->pinfo->cinfo, COL_INFO, val_to_str(camel_pdu_type, camel_Component_vals, "Unknown Camel (%u)"));
     col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
   }
 
index c4cee93a8dca91d35af0cf89ff6fdfd765c6bbe1..c471a6180babbe2687460a44eb8ca4cdd9633a04 100644 (file)
@@ -1750,7 +1750,7 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
 
   if (check_col(actx->pinfo->cinfo, COL_INFO)){
-    col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)"));
+    col_add_fstr(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)"));
        col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ");
   }
   offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU);
index 9f8bd2104312131614c44452157aafa9db9e11c2..2051361ad1f06d44212ab41d0262ed6a9adadcb4 100644 (file)
@@ -158,7 +158,7 @@ static int dissect_cmp_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa
        }
 
        if (check_col (pinfo->cinfo, COL_INFO)) {
-               col_set_str (pinfo->cinfo, COL_INFO, val_to_str (pdu_type, cmp_pdu_types, "0x%x"));
+               col_add_fstr (pinfo->cinfo, COL_INFO, val_to_str (pdu_type, cmp_pdu_types, "0x%x"));
        }
 
        switch(pdu_type){
index f912692557936a682293f751fc25b88c07531291..08b885a82a858c1f3524f77e56692e61dc5ce30e 100644 (file)
@@ -100,7 +100,7 @@ dissect_smrse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
 
        col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMRSE");
        if (check_col(pinfo->cinfo, COL_INFO))
-               col_set_str(pinfo->cinfo, COL_INFO, val_to_str(tag, tag_vals,"Unknown Tag:0x%02x"));
+               col_add_fstr(pinfo->cinfo, COL_INFO, val_to_str(tag, tag_vals,"Unknown Tag:0x%02x"));
 
        proto_tree_add_item(tree, hf_smrse_reserved, tvb, 0, 1, FALSE);
        proto_tree_add_item(tree, hf_smrse_length, tvb, 1, 2, FALSE);
index 6a7cc6b4ec75cf71a5fe856a95431a9c8b2571e0..a3e55cb7d5084eea5461dc6a18ecc7479ad49b23 100644 (file)
@@ -7102,7 +7102,7 @@ dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn
 
   if (check_col(actx->pinfo->cinfo, COL_INFO)){
     /* Populate the info column with PDU type*/
-    col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str(camel_pdu_type, camel_Component_vals, "Unknown Camel (%u)"));
+    col_add_fstr(actx->pinfo->cinfo, COL_INFO, val_to_str(camel_pdu_type, camel_Component_vals, "Unknown Camel (%u)"));
     col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
   }
 
index 94f2ae79118bc0ed69c6f51b70fbddccdf118fae..c5d702472d49c7704b11ab1100b10ff4659c0776 100644 (file)
@@ -794,7 +794,7 @@ static void dissect_pdcp_lte(tvbuff_t *tvb, gint offset,
     }
     offset++;
 
-    col_set_str(pinfo->cinfo, COL_INFO, val_to_str(opcode, rlc_op_vals, "Unknown"));
+    col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(opcode, rlc_op_vals, "Unknown"));
 
     /* Assume UE side, so REQ is UL, IND is DL */
     switch (opcode) {
index a18960facca43d134a69a458864fc3f0aa6310d1..50f44b88b25fb15118da00276d1b0aea9e9a3fca 100644 (file)
@@ -1544,7 +1544,7 @@ static int dissect_cmp_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa
        }
 
        if (check_col (pinfo->cinfo, COL_INFO)) {
-               col_set_str (pinfo->cinfo, COL_INFO, val_to_str (pdu_type, cmp_pdu_types, "0x%x"));
+               col_add_fstr (pinfo->cinfo, COL_INFO, val_to_str (pdu_type, cmp_pdu_types, "0x%x"));
        }
 
        switch(pdu_type){
index 9c6b584a0d1186c19c74e68c65314783939585db..1398e740a2d0a42a2e0533a2ab54d5f5dc20e4f6 100644 (file)
@@ -784,7 +784,7 @@ dissect_dlm3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
 
   if (check_col(pinfo->cinfo, COL_INFO))
     col_set_str(pinfo->cinfo, COL_INFO,
-                val_to_str(h_cmd,
+                val_to_str_const(h_cmd,
                            dlm3_cmd,
                            "packet-dlm3.c internal bug"));
 
index b16ea58b3570dbdb880b596c7175fb82b45c073b..9deb78014395394cec4ae74a019b02c496d4ea97 100644 (file)
@@ -17569,7 +17569,7 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
 
   if (check_col(actx->pinfo->cinfo, COL_INFO)){
-    col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)"));
+    col_add_fstr(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)"));
        col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ");
   }
   offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU);
index dbb3cb726cfcdad3ecb710db60ecfa4d55e92042..9ad771e46470634037e8ae6aa88d562f4a7383c9 100644 (file)
@@ -435,7 +435,7 @@ dissect_hip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        control_h = tvb_get_ntohs(tvb, newoffset);
        newoffset += 2;
 
-       col_set_str(pinfo->cinfo, COL_INFO, val_to_str(hiph_packet_type, pinfo_vals, "Unknown"));
+       col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(hiph_packet_type, pinfo_vals, "Unknown"));
 
        /* populate a tree in the second pane with the status of the link layer (i.e. none) */
        if(tree) {
index 1ccc32cc0cbc5965a485bef23cf615a9ee765479..26388faf30bfc9953dcbc45535af99703318f089 100644 (file)
@@ -366,7 +366,7 @@ dissect_ieee802154_fcf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee
 
     /* Display the frame type. */
     if (tree) proto_item_append_text(tree, " %s", val_to_str(packet->frame_type, ieee802154_frame_types, "Reserved"));
-    if (check_col(pinfo->cinfo, COL_INFO)) col_set_str(pinfo->cinfo, COL_INFO, val_to_str(packet->frame_type, ieee802154_frame_types, "Reserved"));
+    if (check_col(pinfo->cinfo, COL_INFO)) col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(packet->frame_type, ieee802154_frame_types, "Reserved"));
 
     /* Add the FCF to the protocol tree. */
     if (tree) {
@@ -1117,7 +1117,7 @@ dissect_ieee802154_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ieee
     /* Get and display the command frame identifier. */
     cmd_id = tvb_get_guint8(tvb, offset);
     if(check_col(pinfo->cinfo, COL_INFO)) {
-        col_set_str(pinfo->cinfo, COL_INFO, val_to_str(cmd_id, ieee802154_cmd_names, "Unknown Command"));
+        col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(cmd_id, ieee802154_cmd_names, "Unknown Command"));
     }
     if (tree) {
         /* Create a subtree for this command frame. */
index cb3c4728caac7ba2b014d8c1e1322e65942c0b52..6f0810aabc6e6c28d9e04800e49dcb99f282959b 100644 (file)
@@ -269,7 +269,7 @@ dissect_mtp2_lssu(tvbuff_t *su_tvb, packet_info *pinfo, proto_item *mtp2_tree)
     proto_tree_add_item(mtp2_tree, hf_mtp2_sf_extra, su_tvb, sf_extra_offset, SF_EXTRA_LENGTH, LITTLE_ENDIAN_BYTE_ORDER);
 
   if (check_col(pinfo->cinfo, COL_INFO))
-    col_set_str(pinfo->cinfo, COL_INFO, val_to_str(sf, status_field_acro_vals, "Unknown"));
+    col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(sf, status_field_acro_vals, "Unknown"));
 }
 
 static void
index 74305f947e29126a7bfadc21b3b51bf762283984..0dfd2e8570fc9ccb5584c4adfadd650387bb884d 100644 (file)
@@ -105,7 +105,7 @@ static void dissect_nat_pmp (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
   op_ti = proto_tree_add_item (nat_pmp_tree, hf_opcode, tvb, offset, 1, FALSE);
   offset++;
 
-  col_set_str (pinfo->cinfo, COL_INFO, val_to_str (opcode, opcode_vals, "Unknown opcode: %d"));
+  col_add_fstr (pinfo->cinfo, COL_INFO, val_to_str (opcode, opcode_vals, "Unknown opcode: %d"));
 
   switch (opcode) {
 
index f78bb64c58517b9571587a5f0a87ce6bd2957e79..9200c36702c192d3244698e64936f3215f71fd58 100644 (file)
@@ -2258,13 +2258,13 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                                 ptp2_managementErrorId_vals, "Unknown Error Id %u"));
                                        break;
                                default:
-                                       col_set_str(pinfo->cinfo, COL_INFO, val_to_str(ptp_v2_messageid, ptp_v2_messageid_vals, "Unknown PTP Message (%u)"));
+                                       col_add_fstr(pinfo->cinfo, COL_INFO, val_to_str(ptp_v2_messageid, ptp_v2_messageid_vals, "Unknown PTP Message (%u)"));
                                        break;
                        }
                }
                else
                {
-                   col_set_str(pinfo->cinfo, COL_INFO, val_to_str(ptp_v2_messageid, ptp_v2_messageid_vals, "Unknown PTP Message (%u)"));
+                   col_add_fstr(pinfo->cinfo, COL_INFO, val_to_str(ptp_v2_messageid, ptp_v2_messageid_vals, "Unknown PTP Message (%u)"));
                }
        }
 
index fd04576c6ae201f537ca4c52a0733629f5faffa9..bbb5723756f1e64bd40215341afb95e9e5a840bc 100644 (file)
@@ -277,7 +277,7 @@ dissect_rpl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
        if (check_col(pinfo->cinfo, COL_INFO)) {
                col_set_str(pinfo->cinfo, COL_INFO,
-                   val_to_str(rpl_type, rpl_type_vals, "Unknown Type"));
+                   val_to_str_const(rpl_type, rpl_type_vals, "Unknown Type"));
        }
        if (tree) {
                ti = proto_tree_add_item(tree, proto_rpl, tvb, 0, 
index 4555ae8627d4a0dd457e4abf432209126e014fe0..cba121d3cab3f44613384004d4b0f66132a8f1d6 100644 (file)
@@ -528,7 +528,7 @@ dissect_smrse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
 
        col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMRSE");
        if (check_col(pinfo->cinfo, COL_INFO))
-               col_set_str(pinfo->cinfo, COL_INFO, val_to_str(tag, tag_vals,"Unknown Tag:0x%02x"));
+               col_add_fstr(pinfo->cinfo, COL_INFO, val_to_str(tag, tag_vals,"Unknown Tag:0x%02x"));
 
        proto_tree_add_item(tree, hf_smrse_reserved, tvb, 0, 1, FALSE);
        proto_tree_add_item(tree, hf_smrse_length, tvb, 1, 2, FALSE);
index 45736b0696722f1246b5d3129bc6f464d70b1bcf..4660276b2b5a72ac9b1a06eed3afb00263f7d96d 100644 (file)
@@ -213,7 +213,7 @@ dissect_wow_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
        if(check_col(pinfo->cinfo, COL_INFO)) {
                col_set_str(pinfo->cinfo, COL_INFO,
-                           val_to_str(cmd, cmd_vs,
+                           val_to_str_const(cmd, cmd_vs,
                                       "Unrecognized packet type"));
        }
        
index 0d9a569f91544ed727b76059ea3f1963f5e2f80c..e764d329e9ab89c3c81bc22580c29b71b06a5895 100644 (file)
@@ -965,7 +965,7 @@ static void dissect_zbee_aps_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
 
     /* Add the command name to the info column. */
     if (check_col(pinfo->cinfo, COL_INFO)) {
-        col_set_str(pinfo->cinfo, COL_INFO, val_to_str(cmd_id, zbee_aps_cmd_names, "Unknown Command"));
+        col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(cmd_id, zbee_aps_cmd_names, "Unknown Command"));
     }
 
     /* Handle the contents of the command frame. */
index 2faf9326471738a5e2648a107cf00c338be71350..6d675736ebaaf6045ee7fc0eaa29260e4294d8fa 100644 (file)
@@ -414,7 +414,7 @@ dissect_zbee_nwk(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         proto_item_append_text(proto_root, " %s", val_to_str(packet.type, zbee_nwk_frame_types, "Unknown Type"));
     }
     if (check_col(pinfo->cinfo, COL_INFO)) {
-        col_set_str(pinfo->cinfo, COL_INFO, val_to_str(packet.type, zbee_nwk_frame_types, "Reserved Frame Type"));
+        col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(packet.type, zbee_nwk_frame_types, "Reserved Frame Type"));
     }
 
     /* Get the destination address. */
@@ -641,7 +641,7 @@ static void dissect_zbee_nwk_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
 
     /* Add the command name to the info column. */
     if (check_col(pinfo->cinfo, COL_INFO)) {
-        col_set_str(pinfo->cinfo, COL_INFO, val_to_str(cmd_id, zbee_nwk_cmd_names, "Unknown Command"));
+        col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(cmd_id, zbee_nwk_cmd_names, "Unknown Command"));
     }
 
     /* Handle the command. */
index b95ced81b15ce42ab3316b59e90f226c920bad2e..40f28408eea70e81a760db1c99b4495390b7407b 100644 (file)
@@ -1121,7 +1121,7 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         proto_item_append_text(zdp_tree, ", %s", val_to_str(cluster, zbee_zdp_cluster_names, "Unknown Cluster"));
     }
     if (check_col(pinfo->cinfo, COL_INFO)) {
-        col_set_str(pinfo->cinfo, COL_INFO, val_to_str(cluster, zbee_zdp_cluster_names, "Unknown Cluster"));
+        col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(cluster, zbee_zdp_cluster_names, "Unknown Cluster"));
     }
 
     /* Create a new tvb for the zdp message. */
index e74ea6ceeef68722af296419f62bce31799af4bd..d75def715be01d62ec836c196b6005a4efc19ce1 100644 (file)
@@ -49,6 +49,22 @@ val_to_str(guint32 val, const value_string *vs, const char *fmt) {
   return ep_strdup_printf(fmt, val);
 }
 
+/* Tries to match val against each element in the value_string array vs.
+   Returns the associated string ptr on a match.
+   Returns 'unknown_str', on failure. */
+const gchar*
+val_to_str_const(guint32 val, const value_string *vs, const char *unknown_str) {
+  const gchar *ret;
+
+  g_assert(unknown_str != NULL);
+
+  ret = match_strval(val, vs);
+  if (ret != NULL)
+    return ret;
+
+  return unknown_str;
+}
+
 /* Tries to match val against each element in the value_string array vs.
    Returns the associated string ptr, and sets "*idx" to the index in
    that table, on a match, and returns NULL, and sets "*idx" to -1,
index 3fc92c9bf369b24478ac56b36eb66e930bf2af8a..a4ae024ef9bdb5269713acb3a32dc23b5fa0c1cd 100644 (file)
@@ -65,6 +65,11 @@ extern const gchar* match_strval(guint32 val, const value_string *vs);
    Formats val with fmt, and returns the resulting string, on failure. */
 extern const gchar* val_to_str(guint32 val, const value_string *vs, const char *fmt);
 
+/* Tries to match val against each element in the value_string array vs.
+   Returns the associated string ptr on a match.
+   Returns 'unknown_str', on failure. */
+extern const gchar* val_to_str_const(guint32 val, const value_string *vs, const char *unknown_str);
+
 /* Tries to match val against each element in the value_string array vs.
    Returns the associated string ptr, and sets "*idx" to the index in
    that table, on a match, and returns NULL, and sets "*idx" to -1,