diff options
author | ulfvonbelow <strilen@tilde.club> | 2023-01-29 05:37:34 -0600 |
---|---|---|
committer | Martin Schanzenbach <schanzen@gnunet.org> | 2023-02-06 14:18:24 +0900 |
commit | dc550106149e1ac077438354cb6d7d568edede4d (patch) | |
tree | c0b79f04d803bee9d4f92bb675ed45352845d5ed | |
parent | 64c5d0472e3bbfaf8cb6c7cb240a85fe190d7bbd (diff) | |
download | gnunet-dc550106149e1ac077438354cb6d7d568edede4d.tar.gz gnunet-dc550106149e1ac077438354cb6d7d568edede4d.zip |
SETU: don't leak Operation.{message_control_flow,inquiries_sent}.
Signed-off-by: Martin Schanzenbach <schanzen@gnunet.org>
-rw-r--r-- | src/setu/gnunet-service-setu.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/setu/gnunet-service-setu.c b/src/setu/gnunet-service-setu.c index b9dc24dce..f85ddb224 100644 --- a/src/setu/gnunet-service-setu.c +++ b/src/setu/gnunet-service-setu.c | |||
@@ -1552,6 +1552,16 @@ check_byzantine_bounds (struct Operation *op) | |||
1552 | } | 1552 | } |
1553 | 1553 | ||
1554 | 1554 | ||
1555 | static enum GNUNET_GenericReturnValue | ||
1556 | free_values_iter(void *cls, | ||
1557 | const struct GNUNET_HashCode *key, | ||
1558 | void *value) | ||
1559 | { | ||
1560 | GNUNET_free (value); | ||
1561 | return GNUNET_YES; | ||
1562 | } | ||
1563 | |||
1564 | |||
1555 | /* FIXME: the destroy logic is a mess and should be cleaned up! */ | 1565 | /* FIXME: the destroy logic is a mess and should be cleaned up! */ |
1556 | 1566 | ||
1557 | /** | 1567 | /** |
@@ -1605,6 +1615,19 @@ _GSS_operation_destroy (struct Operation *op) | |||
1605 | GNUNET_CONTAINER_multihashmap32_destroy (op->key_to_element); | 1615 | GNUNET_CONTAINER_multihashmap32_destroy (op->key_to_element); |
1606 | op->key_to_element = NULL; | 1616 | op->key_to_element = NULL; |
1607 | } | 1617 | } |
1618 | if (NULL != op->message_control_flow) | ||
1619 | { | ||
1620 | GNUNET_CONTAINER_multihashmap_iterate (op->message_control_flow, | ||
1621 | &free_values_iter, | ||
1622 | NULL); | ||
1623 | GNUNET_CONTAINER_multihashmap_destroy (op->message_control_flow); | ||
1624 | op->message_control_flow = NULL; | ||
1625 | } | ||
1626 | if (NULL != op->inquiries_sent) | ||
1627 | { | ||
1628 | GNUNET_CONTAINER_multihashmap_destroy (op->inquiries_sent); | ||
1629 | op->inquiries_sent = NULL; | ||
1630 | } | ||
1608 | if (NULL != set) | 1631 | if (NULL != set) |
1609 | { | 1632 | { |
1610 | GNUNET_CONTAINER_DLL_remove (set->ops_head, | 1633 | GNUNET_CONTAINER_DLL_remove (set->ops_head, |