diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 01:56:27 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 01:56:27 +0000 |
commit | 45e9efc6a915f8c5b7874911c8836c9b7fdda7f5 (patch) | |
tree | 980adfbed6d1bac14a195b620b72da7c909378e9 | |
parent | 1ae38887b67ecf14e4c36ca9817d2941b3b73f7b (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.c | 9 | ||||
-rw-r--r-- | epan/wslua/wslua_proto.c | 14 | ||||
-rw-r--r-- | mkcap.c | 2 | ||||
-rw-r--r-- | ui/cli/tap-rtp.c | 1 | ||||
-rw-r--r-- | ui/gtk/main_menubar.c | 1 | ||||
-rw-r--r-- | ui/gtk/proto_hier_stats_dlg.c | 1 | ||||
-rw-r--r-- | ws80211_utils.c | 6 |
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; } @@ -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; } } |