aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wslua
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2014-11-05 14:48:43 +0100
committerEvan Huus <eapache@gmail.com>2014-11-06 05:06:19 +0000
commit3e34273b582874ad89e01c46a3ec437386df57b6 (patch)
treecf6cc5e1a892d2176136ebe303b0c965c34f96ac /epan/wslua
parentc321dc3f2e000213c8c626052e304e2a510c94a6 (diff)
Lua: Fixed some memory leakages.
Change-Id: I5e14c2e5a3868ec40d1989876b06919aa9ece4a1 Reviewed-on: https://code.wireshark.org/review/5138 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Evan Huus <eapache@gmail.com>
Diffstat (limited to 'epan/wslua')
-rw-r--r--epan/wslua/wslua_field.c11
-rw-r--r--epan/wslua/wslua_proto.c20
2 files changed, 19 insertions, 12 deletions
diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c
index 0036f85f8a..7d9e625a24 100644
--- a/epan/wslua/wslua_field.c
+++ b/epan/wslua/wslua_field.c
@@ -483,9 +483,14 @@ void lua_prime_all_fields(proto_tree* tree _U_) {
if (error) {
report_failure("while registering lua_fake_tap:\n%s",error->str);
g_string_free(error,TRUE);
- }
- else if (!dfilter_compile(fake_tap_filter->str, &wslua_dfilter)) {
- report_failure("while compiling dfilter for wslua: '%s'", fake_tap_filter->str);
+ } else {
+ if (wslua_dfilter) {
+ dfilter_free(wslua_dfilter);
+ wslua_dfilter = NULL;
+ }
+ if (!dfilter_compile(fake_tap_filter->str, &wslua_dfilter)) {
+ report_failure("while compiling dfilter for wslua: '%s'", fake_tap_filter->str);
+ }
}
}
diff --git a/epan/wslua/wslua_proto.c b/epan/wslua/wslua_proto.c
index 86780bbbb5..56fa8af6e8 100644
--- a/epan/wslua/wslua_proto.c
+++ b/epan/wslua/wslua_proto.c
@@ -2332,16 +2332,16 @@ WSLUA_METHOD DissectorTable_add (lua_State *L) {
dissector_add_uint(dt->name, port, handle);
} else {
/* Not a number, try as range */
- gchar* pattern = g_strdup(luaL_checkstring(L,WSLUA_ARG_DissectorTable_add_PATTERN));
- range_t *range;
+ const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_add_PATTERN);
+ range_t *range = NULL;
if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
dissector_add_uint_range(dt->name, range, handle);
} else {
- g_free (pattern);
+ g_free (range);
WSLUA_ARG_ERROR(DissectorTable_add,PATTERN,"invalid integer or range");
return 0;
}
- g_free (pattern);
+ g_free (range);
}
} else {
luaL_error(L,"Strange type %d for a DissectorTable",type);
@@ -2396,14 +2396,16 @@ WSLUA_METHOD DissectorTable_set (lua_State *L) {
} else {
/* Not a number, try as range */
const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_set_PATTERN);
- range_t *range;
+ range_t *range = NULL;
if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
dissector_delete_all(dt->name, handle);
dissector_add_uint_range(dt->name, range, handle);
} else {
+ g_free (range);
WSLUA_ARG_ERROR(DissectorTable_set,PATTERN,"invalid integer or range");
return 0;
}
+ g_free (range);
}
} else {
luaL_error(L,"Strange type %d for a DissectorTable",type);
@@ -2448,16 +2450,16 @@ WSLUA_METHOD DissectorTable_remove (lua_State *L) {
dissector_delete_uint(dt->name, port, handle);
} else {
/* Not a number, try as range */
- gchar* pattern = g_strdup(luaL_checkstring(L,WSLUA_ARG_DissectorTable_remove_PATTERN));
- range_t *range;
+ const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_remove_PATTERN);
+ range_t *range = NULL;
if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR)
dissector_delete_uint_range(dt->name, range, handle);
else {
- g_free (pattern);
+ g_free (range);
WSLUA_ARG_ERROR(DissectorTable_remove,PATTERN,"invalid integer or range");
return 0;
}
- g_free (pattern);
+ g_free (range);
}
}