aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-02-17 12:19:33 -0800
committerGuy Harris <guy@alum.mit.edu>2018-02-17 20:20:08 +0000
commit397d32b863b640ccded140acd6eec94da367264b (patch)
treec47745b727ebf6928a1b548485d4868f3f5c0119 /epan/dissectors/packet-dcerpc.c
parent86f2ff6ec027514d067fd6ec054b6b2fa7c3afe1 (diff)
dcerpc_decode_as_change() doesn't need to change the old binding.
The search doesn't use the fields we change (if it did, we probably shouldn't change them, as the old binding might not be found), so don't change them. Instead, when we allocate a *new* binding structure, put the new values into *that* structure. Squelches a "casting away constness" warning. Change-Id: I6dbd1a4cbc2415373f4926f443f9756c8113c0be Reviewed-on: https://code.wireshark.org/review/25841 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors/packet-dcerpc.c')
-rw-r--r--epan/dissectors/packet-dcerpc.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index 9baa032b3e..11838a3de1 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -977,24 +977,24 @@ decode_dcerpc_binding_reset(const char *name _U_, gconstpointer pattern)
static gboolean
dcerpc_decode_as_change(const char *name, gconstpointer pattern, gpointer handle, gchar* list_name)
{
- decode_dcerpc_bind_values_t *binding = (decode_dcerpc_bind_values_t*)pattern;
+ const decode_dcerpc_bind_values_t *binding = (const decode_dcerpc_bind_values_t*)pattern;
decode_dcerpc_bind_values_t *stored_binding;
guid_key *key = *((guid_key**)handle);
-
- binding->ifname = g_string_new(list_name);
- binding->uuid = key->guid;
- binding->ver = key->ver;
-
/* remove a probably existing old binding */
decode_dcerpc_binding_reset(name, binding);
- /* clone the new binding and append it to the list */
+ /*
+ * Clone the new binding, update the changing parts, and append it
+ * to the list.
+ */
stored_binding = g_new(decode_dcerpc_bind_values_t,1);
*stored_binding = *binding;
copy_address(&stored_binding->addr_a, &binding->addr_a);
copy_address(&stored_binding->addr_b, &binding->addr_b);
- stored_binding->ifname = g_string_new(binding->ifname->str);
+ stored_binding->ifname = g_string_new(list_name);
+ stored_binding->uuid = key->guid;
+ stored_binding->ver = key->ver;
decode_dcerpc_bindings = g_slist_append (decode_dcerpc_bindings, stored_binding);