diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2018-01-24 03:06:06 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-01-24 08:34:32 +0000 |
commit | d672ee93724999d93763fa513dcefef5858e919c (patch) | |
tree | a72bf4550beefcbdcb79442bf3e954b884c216f5 | |
parent | cde023c3c5a08131495eb2574c00ff1f34cdce55 (diff) |
wslua: fix nstime memory leak after passing unknown encoding to TvbRange_nstime()
Move checking of encoding before allocating nstime.
Found by clang.
Change-Id: I3c1de5fae6fcf52393cc38302359f21f17808087
Reviewed-on: https://code.wireshark.org/review/25442
Petri-Dish: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/wslua/wslua_tvb.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index d1819b70a8..0a63520694 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -883,6 +883,11 @@ WSLUA_METHOD TvbRange_nstime(lua_State* L) { return 0; } + if (encoding & ~ENC_STR_TIME_MASK) { + WSLUA_OPTARG_ERROR(TvbRange_nstime, ENCODING, "invalid encoding value"); + return 0; + } + nstime = g_new(nstime_t,1); if (encoding == 0) { @@ -900,9 +905,6 @@ WSLUA_METHOD TvbRange_nstime(lua_State* L) { pushNSTime(L, nstime); lua_pushinteger(L, tvbr->len); } - else if (encoding & ~ENC_STR_TIME_MASK) { - WSLUA_OPTARG_ERROR(TvbRange_nstime, ENCODING, "invalid encoding value"); - } else { gint endoff = 0; nstime_t *retval = tvb_get_string_time(tvbr->tvb->ws_tvb, tvbr->offset, tvbr->len, |