Use tvb_get_ephemeral_string() to avoid memleak.
authorkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 20 Sep 2009 08:06:20 +0000 (08:06 +0000)
committerkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 20 Sep 2009 08:06:20 +0000 (08:06 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29994 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-rtps.c

index 677f35e576279558d65c0f0d9680e4ca3d27589e..cc7934b64230a15a01ddd61587f6ee70c388df5c 100644 (file)
@@ -2230,7 +2230,7 @@ static gint rtps_util_add_typecode(proto_tree *tree,
           offset += 4;
 
           /* Name */
-          member_name = tvb_get_string(tvb, offset, member_name_len);
+          member_name = tvb_get_ephemeral_string(tvb, offset, member_name_len);
           offset += member_name_len;
 
           /* is Pointer ? */
@@ -2272,7 +2272,6 @@ static gint rtps_util_add_typecode(proto_tree *tree,
                     -1,
                     NULL,
                     ndds_40_hack);
-          g_free(member_name);
         }
         /* Finally prints the name of the struct (if provided) */
         g_strlcpy(type_name, "}", 40);
@@ -2351,7 +2350,7 @@ static gint rtps_util_add_typecode(proto_tree *tree,
         offset += 4;
 
         /* struct name */
-        struct_name = tvb_get_string(tvb, offset, struct_name_len);
+        struct_name = tvb_get_ephemeral_string(tvb, offset, struct_name_len);
         offset += struct_name_len;
 
 
@@ -2364,7 +2363,6 @@ static gint rtps_util_add_typecode(proto_tree *tree,
         if (seq_max_len != -1) {
           /* We're dissecting a sequence of struct, bypass the seq definition */
           g_snprintf(type_name, 40, "%s", struct_name);
-          g_free(struct_name);
           break;
         }
         /* Prints it */
@@ -2376,7 +2374,6 @@ static gint rtps_util_add_typecode(proto_tree *tree,
                     indent_string,
                     typecode_name,
                     struct_name);
-        g_free(struct_name);
 
         /* PAD align */
         LONG_ALIGN(offset);
@@ -2403,7 +2400,7 @@ static gint rtps_util_add_typecode(proto_tree *tree,
           offset += 4;
 
           /* Name */
-          member_name = tvb_get_string(tvb, offset, member_name_len);
+          member_name = tvb_get_ephemeral_string(tvb, offset, member_name_len);
           offset += member_name_len;
 
           if (tk_id == RTI_CDR_TK_ENUM) {
@@ -2451,8 +2448,6 @@ static gint rtps_util_add_typecode(proto_tree *tree,
                           NULL,
                           ndds_40_hack);
           }
-
-          g_free(member_name);
         }
         /* Finally prints the name of the struct (if provided) */
         g_strlcpy(type_name, "}", 40);
@@ -2562,10 +2557,9 @@ static gint rtps_util_add_typecode(proto_tree *tree,
         LONG_ALIGN(offset);
         alias_name_length = NEXT_guint32(tvb, offset, little_endian);
         offset += 4;
-        alias_name = tvb_get_string(tvb, offset, alias_name_length);
+        alias_name = tvb_get_ephemeral_string(tvb, offset, alias_name_length);
         offset += alias_name_length;
         g_strlcpy(type_name, alias_name, 40);
-        g_free(alias_name);
         break;
     }
 
@@ -2592,7 +2586,7 @@ static gint rtps_util_add_typecode(proto_tree *tree,
         offset += 4;
 
         /* value name */
-        value_name = tvb_get_string(tvb, offset, value_name_len);
+        value_name = tvb_get_ephemeral_string(tvb, offset, value_name_len);
         offset += value_name_len;
 
         g_snprintf(type_name, 40, "valuetype %s", value_name);