aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2019-05-16 19:37:19 +0200
committerPeter Wu <peter@lekensteyn.nl>2019-05-20 14:30:32 +0000
commit0955f15ba2a1b534212ba937a6e7ae1ffa508b76 (patch)
treee557009ef6785e5a05132033c1078db00721f218
parentb45e868e37ce18a9d672bc659088131cfbd461ee (diff)
extcap: Fix memory leak in extcap_free_toolbar_control()
Remove duplicate defition of extcap_free_toolbar_control() and extcap_free_toolbar_value(). Change-Id: Ia4c8ca6160017d769616579db158419426e664b7 Reviewed-on: https://code.wireshark.org/review/33224 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r--extcap.c31
-rw-r--r--extcap_parser.c34
-rw-r--r--extcap_parser.h4
3 files changed, 26 insertions, 43 deletions
diff --git a/extcap.c b/extcap.c
index d5cc98293e..4c1da26067 100644
--- a/extcap.c
+++ b/extcap.c
@@ -287,37 +287,6 @@ extcap_find_interface_for_ifname(const gchar *ifname)
}
static void
-extcap_free_toolbar_value(iface_toolbar_value *value)
-{
- if (!value)
- {
- return;
- }
-
- g_free(value->value);
- g_free(value->display);
- g_free(value);
-}
-
-static void
-extcap_free_toolbar_control(iface_toolbar_control *control)
-{
- if (!control)
- {
- return;
- }
-
- g_free(control->display);
- g_free(control->validation);
- g_free(control->tooltip);
- if (control->ctrl_type == INTERFACE_TYPE_STRING) {
- g_free(control->default_value.string);
- }
- g_list_free_full(control->values, (GDestroyNotify)extcap_free_toolbar_value);
- g_free(control);
-}
-
-static void
extcap_free_toolbar(gpointer data)
{
if (!data)
diff --git a/extcap_parser.c b/extcap_parser.c
index 44ca9bfd56..efc0e2c842 100644
--- a/extcap_parser.c
+++ b/extcap_parser.c
@@ -281,24 +281,34 @@ void extcap_free_arg(extcap_arg *a) {
g_free(a);
}
-static void extcap_free_toolbar_value(iface_toolbar_value *v) {
- if (v == NULL)
+static void extcap_free_toolbar_value(iface_toolbar_value *value)
+{
+ if (value == NULL)
+ {
return;
+ }
- g_free(v->value);
- g_free(v->display);
- g_free(v);
+ g_free(value->value);
+ g_free(value->display);
+ g_free(value);
}
-static void extcap_free_toolbar_control(iface_toolbar_control *c) {
- if (c == NULL)
+void extcap_free_toolbar_control(iface_toolbar_control *control)
+{
+ if (control == NULL)
+ {
return;
+ }
- g_free(c->display);
- g_free(c->validation);
- g_free(c->tooltip);
- g_free(c->placeholder);
- g_free(c);
+ g_free(control->display);
+ g_free(control->validation);
+ g_free(control->tooltip);
+ g_free(control->placeholder);
+ if (control->ctrl_type == INTERFACE_TYPE_STRING) {
+ g_free(control->default_value.string);
+ }
+ g_list_free_full(control->values, (GDestroyNotify)extcap_free_toolbar_value);
+ g_free(control);
}
void extcap_free_arg_list(GList *a) {
diff --git a/extcap_parser.h b/extcap_parser.h
index a05f4de6ae..1a728da3d8 100644
--- a/extcap_parser.h
+++ b/extcap_parser.h
@@ -15,6 +15,7 @@
#include <string.h>
#include <config.h>
+#include "ui/iface_toolbar.h"
typedef enum {
EXTCAP_SENTENCE_UNKNOWN,
@@ -184,6 +185,9 @@ gboolean extcap_compare_is_default(extcap_arg *element, extcap_complex *test);
/* Free a single argument */
void extcap_free_arg(extcap_arg *a);
+/* Free entire toolbar control structure */
+void extcap_free_toolbar_control(iface_toolbar_control *control);
+
/* Free an entire arg list */
void extcap_free_arg_list(GList *a);