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 /epan/wslua | |
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
Diffstat (limited to 'epan/wslua')
-rw-r--r-- | epan/wslua/wslua_proto.c | 14 |
1 files changed, 11 insertions, 3 deletions
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; } |