diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2017-12-15 21:38:30 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-12-16 03:12:00 +0000 |
commit | 28ba56667599c7a90c8492052b438f58aa963902 (patch) | |
tree | 3741f2c3553936466687b205b04c30582258b34e | |
parent | 183b9119dc4caa491cf58bc673a3109a7ef8bcfd (diff) |
wslua: Fix memory leakages
Free some variables in error handling.
Change-Id: I0d0653962b11f760c31872aa7e5b5f1d20c54dcb
Reviewed-on: https://code.wireshark.org/review/24842
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | epan/wslua/wslua_file_common.c | 2 | ||||
-rw-r--r-- | epan/wslua/wslua_file_handler.c | 2 | ||||
-rw-r--r-- | epan/wslua/wslua_gui.c | 2 | ||||
-rw-r--r-- | epan/wslua/wslua_listener.c | 2 |
4 files changed, 7 insertions, 1 deletions
diff --git a/epan/wslua/wslua_file_common.c b/epan/wslua/wslua_file_common.c index 8b3bb99a4a..4333c26ea3 100644 --- a/epan/wslua/wslua_file_common.c +++ b/epan/wslua/wslua_file_common.c @@ -45,6 +45,7 @@ void create_wth_priv(lua_State* L, wtap *wth) { file_priv_t *priv = (file_priv_t*)g_malloc(sizeof(file_priv_t)); if (wth->priv != NULL) { + g_free(priv); luaL_error(L, "Cannot create wtap private data because there already is private data"); return; } @@ -121,6 +122,7 @@ void create_wdh_priv(lua_State* L, wtap_dumper *wdh) { file_priv_t *priv = (file_priv_t*)g_malloc(sizeof(file_priv_t)); if (wdh->priv != NULL) { + g_free(priv); luaL_error(L, "Cannot create wtap_dumper private data because there already is private data"); return; } diff --git a/epan/wslua/wslua_file_handler.c b/epan/wslua/wslua_file_handler.c index 90550666a4..5a7ca89e73 100644 --- a/epan/wslua/wslua_file_handler.c +++ b/epan/wslua/wslua_file_handler.c @@ -635,10 +635,12 @@ WSLUA_CONSTRUCTOR FileHandler_new(lua_State* L) { fh->is_writer = (strchr(type,'w') != NULL) ? TRUE : FALSE; if (fh->is_reader && wtap_has_open_info(short_name)) { + g_free(fh); return luaL_error(L, "FileHandler.new: '%s' short name already exists for a reader!", short_name); } if (fh->is_writer && wtap_short_string_to_file_type_subtype(short_name) > -1) { + g_free(fh); return luaL_error(L, "FileHandler.new: '%s' short name already exists for a writer!", short_name); } diff --git a/epan/wslua/wslua_gui.c b/epan/wslua/wslua_gui.c index e1c8d019f6..ac2fa0e2ce 100644 --- a/epan/wslua/wslua_gui.c +++ b/epan/wslua/wslua_gui.c @@ -265,6 +265,7 @@ WSLUA_FUNCTION wslua_new_dialog(lua_State* L) { /* Pops up a new dialog */ for (i = 1; i <= top; i++) { if (! lua_isstring(L,i)) { g_ptr_array_free(labels,TRUE); + g_free (dcbd); WSLUA_ERROR(new_dialog,"All fields must be strings"); return 0; } @@ -296,6 +297,7 @@ WSLUA_CONSTRUCTOR ProgDlg_new(lua_State* L) { /* Creates a new `ProgDlg` progres if (ops->new_progress_window) { pd->pw = ops->new_progress_window(ops->ops_id, pd->title, pd->task, TRUE, &(pd->stopped)); } else { + g_free (pd); WSLUA_ERROR(ProgDlg_new, "GUI not available"); return 0; } diff --git a/epan/wslua/wslua_listener.c b/epan/wslua/wslua_listener.c index 0110774029..dd60ab3a92 100644 --- a/epan/wslua/wslua_listener.c +++ b/epan/wslua/wslua_listener.c @@ -240,7 +240,7 @@ WSLUA_CONSTRUCTOR Listener_new(lua_State* L) { /* WSLUA_ERROR(new_tap,"tap registration error"); */ lua_pushfstring(L,"Error while registering tap:\n%s",error->str); g_string_free(error,TRUE); - luaL_error(L,lua_tostring(L,-1)); + return luaL_error(L,lua_tostring(L,-1)); } if (all_fields) { |