aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-07-09 01:56:27 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-07-09 01:56:27 +0000
commit45e9efc6a915f8c5b7874911c8836c9b7fdda7f5 (patch)
tree980adfbed6d1bac14a195b620b72da7c909378e9
parent1ae38887b67ecf14e4c36ca9817d2941b3b73f7b (diff)
From Evan Huus:
Fix leaks - don't g_strdup a string just to use it in a g_strdup_printf - clean up properly in error cases in lua bindings - misc. other missing g_free() calls - one missing fclose() in the new 80211_utils https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7454 svn path=/trunk/; revision=43617
-rw-r--r--epan/filesystem.c9
-rw-r--r--epan/wslua/wslua_proto.c14
-rw-r--r--mkcap.c2
-rw-r--r--ui/cli/tap-rtp.c1
-rw-r--r--ui/gtk/main_menubar.c1
-rw-r--r--ui/gtk/proto_hier_stats_dlg.c1
-rw-r--r--ws80211_utils.c6
7 files changed, 21 insertions, 13 deletions
diff --git a/epan/filesystem.c b/epan/filesystem.c
index 8c10cef59e..6cfdd5441d 100644
--- a/epan/filesystem.c
+++ b/epan/filesystem.c
@@ -1053,13 +1053,10 @@ get_persconffile_dir_no_profile(void)
*/
pwd = getpwuid(getuid());
if (pwd != NULL) {
- /*
- * This is cached, so we don't need to worry
- * about allocating multiple ones of them.
- */
- homedir = g_strdup(pwd->pw_dir);
- } else
+ homedir = pwd->pw_dir;
+ } else {
homedir = "/tmp";
+ }
}
persconffile_dir = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", homedir, PF_DIR);
#endif
diff --git a/epan/wslua/wslua_proto.c b/epan/wslua/wslua_proto.c
index a345ccebe5..db1c3a92a0 100644
--- a/epan/wslua/wslua_proto.c
+++ b/epan/wslua/wslua_proto.c
@@ -618,12 +618,18 @@ WSLUA_CONSTRUCTOR ProtoField_new(lua_State* L) { /* Creates a new field to be us
f->type = get_ftenum(luaL_checkstring(L,WSLUA_ARG_ProtoField_new_TYPE));
/*XXX do it better*/
- if (f->type == FT_NONE)
+ if (f->type == FT_NONE) {
+ g_free(f->name);
+ g_free(f->abbr);
+ g_free(f);
WSLUA_ARG_ERROR(ProtoField_new,TYPE,"invalid ftypes");
+ }
if (proto_check_field_name(f->abbr)) {
- WSLUA_ARG_ERROR(ProtoField_new,ABBR,"Invalid char in abbrev");
- return 0;
+ g_free(f->name);
+ g_free(f->abbr);
+ g_free(f);
+ WSLUA_ARG_ERROR(ProtoField_new,ABBR,"Invalid char in abbrev");
}
if (! lua_isnil(L,WSLUA_OPTARG_ProtoField_new_VOIDSTRING) ) {
@@ -639,6 +645,8 @@ WSLUA_CONSTRUCTOR ProtoField_new(lua_State* L) { /* Creates a new field to be us
} else if (tfs) {
f->vs = TFS(tfs);
} else {
+ g_free(f->name);
+ g_free(f->abbr);
g_free(f);
return 0;
}
diff --git a/mkcap.c b/mkcap.c
index f3bc42e69c..5f9515971a 100644
--- a/mkcap.c
+++ b/mkcap.c
@@ -571,8 +571,8 @@ process_drop_list(char *drop_list)
else
drops[commas / 2].drop_seg_start = num;
}
-
+ g_free(save);
}
diff --git a/ui/cli/tap-rtp.c b/ui/cli/tap-rtp.c
index a2361313f5..20da2283bc 100644
--- a/ui/cli/tap-rtp.c
+++ b/ui/cli/tap-rtp.c
@@ -122,6 +122,7 @@ rtp_streams_stat_draw(void *arg _U_)
list = g_list_next(list);
+ g_free(payload_type);
}
diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c
index 546b729a06..1e3ffd8c54 100644
--- a/ui/gtk/main_menubar.c
+++ b/ui/gtk/main_menubar.c
@@ -4205,6 +4205,7 @@ add_menu_recent_capture_file_absolute(gchar *cf_name) {
submenu_recent_files = gtk_ui_manager_get_widget(ui_manager_main_menubar, MENU_RECENT_FILES_PATH);
if(!submenu_recent_files){
g_warning("add_menu_recent_capture_file_absolute: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH");
+ g_free(normalized_cf_name);
return;
}
recent_files_list = g_object_get_data(G_OBJECT(submenu_recent_files), "recent-files-list");
diff --git a/ui/gtk/proto_hier_stats_dlg.c b/ui/gtk/proto_hier_stats_dlg.c
index ea70c98365..1982823eb1 100644
--- a/ui/gtk/proto_hier_stats_dlg.c
+++ b/ui/gtk/proto_hier_stats_dlg.c
@@ -104,6 +104,7 @@ proto_hier_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data _U_, g
str = g_strdup_printf("%s and %s", strtmp, filter);
} else {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Could not acquire information to build a filter!\nTry expanding or choosing another item.");
+ g_free(strtmp);
return;
}
diff --git a/ws80211_utils.c b/ws80211_utils.c
index 5131f03bd7..8dde38e16e 100644
--- a/ws80211_utils.c
+++ b/ws80211_utils.c
@@ -207,9 +207,8 @@ static int get_phys_handler(struct nl_msg *msg, void *arg)
iface->channel_types = 1 << WS80211_CHAN_NO_HT;
if (tb_msg[NL80211_ATTR_WIPHY_NAME]) {
- char *phyname;
- phyname = g_strdup(nla_get_string(tb_msg[NL80211_ATTR_WIPHY_NAME]));
- iface->ifname = g_strdup_printf("%s.mon", phyname);
+ iface->ifname = g_strdup_printf("%s.mon",
+ nla_get_string(tb_msg[NL80211_ATTR_WIPHY_NAME]));
}
nla_for_each_nested(nl_band, tb_msg[NL80211_ATTR_WIPHY_BANDS], rem_band) {
@@ -420,6 +419,7 @@ static int ws80211_populate_devices(GArray *interfaces)
ret = fgets(line, sizeof(line), fh);
if (ret == NULL) {
fprintf(stderr, "Error parsing /proc/net/dev");
+ fclose(fh);
return -1;
}
}